我是黑莓 10 开发者。我使用 momentics IDE 开发黑莓 10 应用程序
我的项目包括这样的 4 个文件:
(x.h)
#ifndef X_H #define X_H #include "Y.h" class X: public Y { Q_OBJECT public: explicit X (QObject *parent = 0); /*...*/ #endif
(y.h)
#ifndef Y_H #define Y_H #include <QObject> #include <QtGui/QSortFilterProxyModel> class Y : public QSortFilterProxyModel { Q_OBJECT public: explicit Y (QObject *parent = 0); /*...*/ #endif
( main.cpp )
#include "x.h" #include "xModel.h" /*...*/ qmlRegisterType<X>("com.lib", 0, 1, "X"); qmlRegisterType<xModel>("com.lib", 0, 1, "xModel"); /*...*/
(main.qml)
import com.lib 0.1 import bb.cascades 1.0 Page { /*...*/ attachedObjects: [ X { /* INFOS: The super type of the component X is unknown, some of its properties are not validated.*/ id: myclass sourceModel: xModel }, xModel { id: xMyModel } ] /*...*/ }
但是,当我在 Momentics IDE 中构建项目时,我看到了该错误,但是如果我在 QtCreator 中构建此代码(导入 QtQuick 而不是 bb.cascades),那么我看不到这样的错误:
errors: (asset:///main.qml:112:12: Cannot assign to non-existent property "sourceModel")
bb::cascades::QmlDocument:createRootObject document is not loaded or has errors, can't create root
我该怎么办?
最佳答案
您需要为您希望自定义组件拥有的每个属性添加 Q_PROPERTY 宏,正如其他人已经评论过的那样,您应该提供更多的代码来真正帮助您。
无论如何添加 sourceModel 属性你的头文件应该是这样的
#ifndef X_H
#define X_H
#include "Y.h"
class X: public Y {
Q_OBJECT
Q_PROPERTY(typeOfSourceModel sourceModelAccessor WRITE setSourceModel READ sourceModel NOTIFY sourceModelChanged)
public:
explicit X (QObject *parent = 0);
/*...*/
#endif
其中 sourceModelAccessor 是 sourceModel 属性的访问器,setSourceModel 是一个修改器,sourceModelChanged 是一个信号。
关于c++ - 组件 X 的父类(super class)型未知,其某些属性未经过验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28134489/