Супер тип компонента X неизвестен, некоторые его свойства не проверены

Я разработчик Blackberry 10. Я использую IDE для создания приложений BlackBerry 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.0Page {
    /*...*/
    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
    }
    ]
    /*...*/
    }
    

Но когда я собираю проект в IDE Momentics, я вижу эту ошибку, но если я собираю этот код в 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

Что я должен делать?

0

Решение

Вам нужно добавить макрос 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

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector