0

Qt Quick 2.0のドキュメントにある例に基づいてコードを作成しListModel、C++ から動的に QML にデータを提供しました。

MyModel.h :

class MyObject: public QObject
{
  Q_OBJECT

  Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)

  public:
    MyObject(QObject *parent=0);
    ~MyObject();

    QString name() const;
    void setName(const QString &name);

    QString deviceName;

  Q_SIGNALS:
    void nameChanged();
};

QML ファイル:

import QtQuick 2.0

ListView {
    width: 100; height: 100

    model: myModel
    delegate: Rectangle {
        height: 25
        width: 100
        Text { text: name }
    }
}

私のMain.cppQList<QObject *>で、いくつかのインスタンスで満たす を作成し、MyModelそれが機能するようになりました。

QList<QObject *> listElems;
listElems.append(new MyModel());
listElems.append(new MyModel());

QQmlContext *ctxt = view->rootContext();
ctxt->setContextProperty("myModel",QVariant::fromValue(listElems));

しかし、 a を使用する代わりに aQList<QObject *>を使用するとQList<MyObject *>、QML をロードするときに、プロパティ名が定義されていないことを示すエラーが発生します。

qrc:view.qml:10: ReferenceError: 名前が定義されていません

qRegisterMetaType<T>()and を使用してみましたが、qmlRegisterType<T>()成功しませんでした。私は何を間違っていますか?

4

1 に答える 1