C++;QML插件,无法查看C++;实例 我编写了一个C++插件,它公开了一个C++的代码> MyCppClass < /Calp>。Q_INVOKABLE函数可以工作,但我无法“看到”同一实例的任何Q_属性
假设一个平凡的C++;QML插件,无法查看C++;实例 我编写了一个C++插件,它公开了一个C++的代码> MyCppClass < /Calp>。Q_INVOKABLE函数可以工作,但我无法“看到”同一实例的任何Q_属性,c++,qt,plugins,qml,C++,Qt,Plugins,Qml,假设一个平凡的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
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;
};
QML使用示例:
// 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
}
}
//文件:MyQml.qml
导入QtQuick 2.1
导入QtQuick.Controls 1.0
导入QtQuick.Window 2.0
导入MyCPP1.0插件
项目{
MyCppClass{/我也使用Win7Qt5.1.1,我对Q_属性没有问题
你的函数实现可能有问题(比如改变信号的无限循环)?
或者你的插件有多个版本,并且使用了错误的插件
如果问题不是这样,您可以尝试在C++中创建MyCPppCype对象,并用元对象字体(特别是QObj::DyrimPrimyType名称或QMeta对象::PrimeTytCurn/属性)来探索它。要获取属性列表,很可能您没有在Qt元对象系统中正确注册您的类。这通常是通过
qmlRegisterType
或类似方法完成的