c++ - 组件 X 的父类(super class)型未知,其某些属性未经过验证

标签 c++ qt blackberry qml blackberry-10

我是黑莓 10 开发者。我使用 momentics IDE 开发黑莓 10 应用程序

我的项目包括这样的 4 个文件:

  1. (x.h)

    #ifndef X_H
    #define X_H
    #include "Y.h"
    
    class X: public Y {
        Q_OBJECT
    public:
        explicit X (QObject *parent = 0);
    /*...*/
    #endif
    
  2. (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
    
  3. ( main.cpp )

    #include "x.h"
    #include "xModel.h"
    /*...*/
    qmlRegisterType<X>("com.lib", 0, 1, "X");
    qmlRegisterType<xModel>("com.lib", 0, 1, "xModel");
    
    /*...*/
    
  4. (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 是一个信号。

看看http://qt-project.org/doc/qt-4.8/properties.html

关于c++ - 组件 X 的父类(super class)型未知,其某些属性未经过验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28134489/

相关文章:

c++ - 通过引用或指针传递 vector

c++ - OpenGL 和 Windows 编程 C++

c++ - 使用 boost 的 C++ 中的 hello world python 扩展?

c++ - 用 define 替换两次函数调用

c++ - 我怎样才能从另一个 QVariantMap 影响一个 QVariantMap?

java - Blackberry:OS 5.0 上的 BrowserField2 API 滚动问题

黑莓 - 平台版本和软件版本

c++ - EXIF 之类的视频

c++ - QT 线程问题...有些东西正在拖延 GUI 响应

python - 在连接的项目更改时更新自定义 QGraphicsItem 的位置