4

ListElement(QML):color;のプロパティにアクセスしようとしています。

ListModel {
    id:myListModel
    ListElement {name:"one" ;color:"red";objectName:"first"}
    ListElement(name:"two";color:"green"}
}

C ++では、以下を使用する必要があります。

QObject* o=ui->declarativeView->rootObject()->findChild<QObject*>("first");
  o->setProperty("color","blue");

しかし、私はこのプロパティにアクセスできません。助けてください。

4

1 に答える 1

4

AListModelは通常のQMLとして解析されるのではなく、カスタムパーサーを使用してListElement宣言を処理します。これにより、モデルはすべてのデータ要素に対して高価なオブジェクトを作成することを回避できます。 ListModelQMLを介してモデルデータを操作するために使用できる多くの関数があります。C++からアクセスできるQMLのモデルに独自の関数を追加できます。

ListModel {
    id:myListModel
    objectName: "model"
    function setColor(index, color) {
        myListModel.setProperty(index, "color", color)
    }
    ListElement {name:"one";color:"red"}
    ListElement {name:"two";color:"green"}
}

およびC++の場合:

QObject* o=ui->declarativeView->rootObject()->findChild<QObject*>("model");
QMetaObject::invokeMethod(o, "setColor", Q_ARG(QVariant, 0), Q_ARG(QVariant, "yellow"));
于 2012-10-09T01:59:19.880 に答える