gpt4 book ai didi

qt - 如何在QML中动态添加组件?

转载 作者:行者123 更新时间:2023-12-04 16:44:37 26 4
gpt4 key购买 nike

我试图在按下按钮时动态创建一个组件,然后将其添加到当前父对象。我不确定在这里我做错了什么,

我有这个简单的布局:

import QtQuick 2.0
import Ubuntu.Components 0.1
import "components"
import "componentCreation.js" as MyScript

/*!
\brief MainView with a Label and Button elements.
*/

MainView {
// objectName for functional testing purposes (autopilot-qt5)
objectName: "mainView"

// Note! applicationName needs to match the "name" field of the click manifest
applicationName: "com.ubuntu.developer..SpritePractice"

/*
This property enables the application to change orientation
when the device is rotated. The default is false.
*/
//automaticOrientation: true

width: units.gu(100)
height: units.gu(75)

Page {
title: i18n.tr("Simple")

Column {
spacing: units.gu(1)
anchors {
margins: units.gu(2)
fill: parent
}

Button
{
text: i18n.tr("Hello World!!");
onClicked:
{
var component;
var sprite;
component = Qt.createComponent("Sprite.qml");
sprite = component.createObject(parent, {"x": 100, "y": 100});
}
}
}
}
}

这是我要添加的“sprite”:
import QtQuick 2.0

Rectangle { width: 80; height: 50; color: "red" }

如何将要创建的组件添加到当前父组件?

解决方法:

我使用以下答案,并使用Ubuntu文档:
  • http://developer.ubuntu.com/api/qml/sdk-1.0/QtQml.qtqml-javascript-dynamicobjectcreation/#creating-objects-dynamically
  • 最佳答案

    您需要在此处提供ID,而不是父级。

    sprite = component.createObject(parent, {"x": 100, "y": 100});

    尝试跟随,
    Page {
    ...

    Column {
    id: container
    ...
    Button
    {
    text: i18n.tr("Hello World!!");
    onClicked:
    {
    var component;
    var sprite;
    component = Qt.createComponent("Sprite.qml");
    sprite = component.createObject(container, {"x": 100, "y": 100});
    }
    }
    }
    }

    我还创建了一个 sample code,它也一样,请看看

    关于qt - 如何在QML中动态添加组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19533565/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com