[Interest] sharing singleton instance between C++ and QML
Ulf Hermann
ulf.hermann at qt.io
Tue Oct 31 18:32:56 CET 2023
> which works fine. Then I wanted to clean the code up a little more, and
> removed the "public:", given that the above is a `struct`, so everything
> in it is public anyhow. And that's where it stopped working !
The Q_GADGET macro contains a "private:", just like the Q_OBJECT macro:
#define Q_GADGET_EXPORT(...) \
public: \
static __VA_ARGS__ const QMetaObject staticMetaObject; \
void qt_check_for_QGADGET_macro(); \
typedef void QtGadgetHelper; \
private: \
QT_WARNING_PUSH \
Q_OBJECT_NO_ATTRIBUTES_WARNING \
Q_DECL_HIDDEN_STATIC_METACALL static void
qt_static_metacall(QObject *, QMetaObject::Call, int, void **); \
QT_WARNING_POP \
QT_ANNOTATE_CLASS(qt_qgadget, "") \
/*end*/
/* qmake ignore Q_GADGET */
#define Q_GADGET Q_GADGET_EXPORT()
> Why isn't the MOC using an actual compiler frontend to analyse these
> declarations ?
There have been some attempts to modernize moc, but so far the custom
C++ parser has been the preferred choice. It has the upside of not
requiring any dependencies and being fairly fast. I'm not an expert in
that particular area, though.
best regards,
Ulf
More information about the Interest
mailing list