Я разработчик Blackberry 10. Я использую IDE для создания приложений BlackBerry 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.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
Что я должен делать?
Вам нужно добавить макрос 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 — сигнал.