[Interest] C++/QML: Plugin loads, Q_INVOKABLE works, no properties
Charley Bay
charleyb123 at gmail.com
Fri Sep 13 18:33:10 CEST 2013
I wrote a C++ plugin that exposes a C++ "MyCppClass" for QML. The
"Q_INVOKABLE" members work, but I cannot "see" any "Q_PROPERTY" values for
the *same* instance.
Assume a trivial "MyCppClass":
//-----------
class MyCppClass : public QObject {
Q_OBJECT
Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged)
public:
MyCppClass();
virtual ~MyCppClass();
Q_INVOKABLE void myInvokeFunc();
int value();
void setValue(int i);
signals:
void valueChanged(int);
private:
int m_iValue;
};
//-----------
Example QML use:
//-----------
// FILE: MyQml.qml
import QtQuick 2.1
import QtQuick.Controls 1.0
import QtQuick.Window 2.0
import MyCppPlugin 1.0
Item {
MyCppClass { //<==OK
id: myClass //<==OK
value: 42 //<==QML LOAD ERROR
}
Button {
text: "Hello"
onClicked: {
myClass.myInvokeFunc() //<==OK
}
}
//-----------
What's going on:
*- SUCCESS: C++ Plugin loads through QML "import"
*- SUCCESS: Instantiating a C++ object in QML
*- SUCCESS: Calling "Q_INVOKABLE" function from QML
*- FAIL: Accessing any properties in QML from that *same* C++ object (QML
fails to load, error: "Cannot assign to non-existent property "value"")
.... assigning/binding fails to load the QML file, and "reading" any
property results in "undefined")
This doesn't make sense to me (Qt 5.1.1, Win7). The plugin loads, the C++
object is instantiated, the "Q_INVOKABLE" function works, but I apparently
cannot "see" any "Q_PROPERTY" values.
QUESTION: What are the possible scenarios where "Q_INVOKABLE" works on an
instance, but "Q_PROPERTY" properties are still unavailable for that *same*
instance?
--charley
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20130913/3efe6b2b/attachment.html>
More information about the Interest
mailing list