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
或类似方法完成的