我想动态创建一个C++
来自 QML
的对象.我创建了一个 QObject
派生类名为 Car
并将其暴露给QML
使用 qmlRegisterType<Car>("org.qtproject.models", 1, 0, "Car");
.里面QML
我能够实例化 Car
像这样的对象:
Car {
id : car_1
carName : "H1"
carBrand : "Hummer"
carPrice : 125000
}
然后使用 car_1
对象并将其传递回 C++
如果我需要的话,很容易。但我想要的是创建一个 Car
在 QML
中动态对象,所以我可以将它传递回 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);
}
}
有没有办法动态创建一个C++
来自 QML
的对象边?我也无法使用 Qt.createComponent
因为没有 *.qml
文件中 Car
被定义为 Car
在 C++
中定义.
最佳答案
您可以使用 Loader .
像这样:
Loader {
id: carLoader
active: false
sourceComponent:
Car {
id : car_1
carName : "H1"
carBrand : "Hummer"
carPrice : 125000
}
MouseArea
{
anchors.fill: parent
onClicked: carLoader.active:true
}
关于c++ - 从 QML 动态创建 C++ 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253429/