我想要从QML
动态创建一个C++
对象。我创建了一个继承自QObject
的类,名为Car
,并使用 qmlRegisterType<Car>("org.qtproject.models", 1, 0, "Car");
将其导入到QML
中。在QML
中,我可以这样实例化一个Car
对象:
Car {
id : car_1
carName : "H1"
carBrand : "Hummer"
carPrice : 125000
}
如果需要,我可以轻松地使用car_1
对象并将其传回到C ++
。但是我希望能够在QML
中动态创建一个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++对象?我也无法使用Qt.createComponent,因为没有定义Car的*.qml文件,因为Car是在C++中定义的。
Qt.createQmlObject
的字符串中包含import QtQuick 2.0;
。 - Tarodcomponent = 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: Invalid write to global property "component"
的错误提示... - Jacob Kriegvar component = Qt.createQmlObject
而不是component = Qt.createQmlObject
,你会遇到相同的问题吗? - Tarod