从 QML 动态创建 C++ 对象

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++

Tar*_*rod 2

正如我在评论中所说,问题是变量component,它当时不存在。

因此,要解决该问题,替换以下代码就足够了:

onClicked: {
    component = Qt.createQmlObject(...);
Run Code Online (Sandbox Code Playgroud)

经过:

onClicked: {
    var component = Qt.createQmlObject(...);
Run Code Online (Sandbox Code Playgroud)