C++
オブジェクトをQML
から動的に作成したいとします。私はというクラスを作成し、Car
という名前をつけてQML
に公開しました。これはqmlRegisterType<Car>("org.qtproject.models", 1, 0, "Car");
です。QMLからC++オブジェクトを動的に作成
Car {
id : car_1
carName : "H1"
carBrand : "Hummer"
carPrice : 125000
}
をしてからcar_1
オブジェクトを使用して、私がする必要がある場合は簡単にC++
に戻ってそれを渡す:QML
内部で私はこのようなCar
オブジェクトをインスタンス化することができています。しかし、私が望むのは、にCar
オブジェクトを動的に作成することです。その結果、C++
に戻すことができます。
私が試した:
MouseArea
{
anchors.fill: parent
onClicked: {
component = Qt.createQmlObject("Car { id: car_1; carName : \"H1\"; carBrand : \"Hummer\"; carPrice : 125000; }",
parent, "dynamicSnippet1");
myCarModel.appendRowFromQml(component);
}
}
が、運を。静的なアプローチでは、正常に動作します:
MouseArea
{
anchors.fill: parent
onClicked: {
myCarModel.appendRowFromQml(car_1);
}
}
は動的QML
側からC++
オブジェクトを作成する方法はありますか? Car
が定義されている*.qml
ファイルがないため、がC++
に定義されているため、Qt.createComponent
も使用できませんでした。
私はよく分かりませんが、問題は 'import QtQuick 2 'を含める必要があることです。0; '' Qt.createQmlObject'に渡された文字列内 – Tarod
@Tarod答えに感謝します。私はまた 'component = Qt.createQmlObject(" import QtQuick 2.4; import org.qtproject.models 1.0; car {id:car_1; carName:\ "H1 \"; carBrand:\ "Hummer \"; carPrice:125000;} "、parent、" dynamicSnippet1 ");' qrc:/main.qml:58:Error:コードが実行されたときにグローバルプロパティ "component"に無効な書き込みが発生しました... –
'component = Qt.createQmlObject'の代わりに' var component = Qt.createQmlObject'を書いていますか? – Tarod