Jac*_*ieg 6 c++ qt qml qt-quick qtquick2
我想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
}
Run Code Online (Sandbox Code Playgroud)
然后使用该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);
}
}
Run Code Online (Sandbox Code Playgroud)
但没有运气。使用静态方法,工作正常:
MouseArea
{
anchors.fill: parent
onClicked: {
myCarModel.appendRowFromQml(car_1);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法C++从QML侧面动态创建对象?我也不能使用Qt.createComponent,因为没有*.qml在该文件中Car被定义为Car在定义C++。
正如我在评论中所说,问题是变量component,它当时不存在。
因此,要解决该问题,替换以下代码就足够了:
onClicked: {
component = Qt.createQmlObject(...);
Run Code Online (Sandbox Code Playgroud)
经过:
onClicked: {
var component = Qt.createQmlObject(...);
Run Code Online (Sandbox Code Playgroud)