was ist der Unterschied zwischen qmlRegisterType und qRegisterMetaType?
Unsolved
German
-
@Galilio
qRegisterMetaType wird benutzt um einen Type für das QMetaObject System zu registrieren, damit es zum Beispiel via Signal/Slots über threads hinweg benutzt werden kannqmlRegisterType ist wie der name suggeriert dafür da, das der Type in QML verwendet werden kann, importiert und instanziert
https://doc.qt.io/qt-5/qmetatype.html#qRegisterMetaType
https://doc.qt.io/qt-5/qqmlengine.html#qmlRegisterType -
@J-Hilk
Danke für die Antwort.
Ich habe folgende:class Bar : public QObject { Q_OBJECT Q_PROPERTY(QString baz READ baz WRITE setBaz NOTIFY bazChanged) public: Bar() {} QString baz() const { return mBaz; } void setBaz(const QString &baz) { if (baz == mBaz) return; mBaz = baz; emit bazChanged(); } signals: void bazChanged(); private: QString mBaz; }; class Foo : public QObject { Q_OBJECT Q_PROPERTY(Bar *bar READ bar CONSTANT FINAL) public: //Foo() {} Foo(std::shared_ptr<Bar> bar, QObject* aParent = nullptr ) Bar *bar() { return &mBar; } private: Bar mBar; };
Was ist dann falsch, wenn ich so schreibe?
qmlRegisterType<Foo>("App", 1, 0, "Foo");
Danke
-
Tja, ein wenig obscure diese Fehlermeldung.
Ich würde mal darauf tippen, dass
Bar
nicht als QML Property dienen kann.
Versuche es als QVariant mit der QVariant::fromValue(mBar) als return Wert der getter Funktion