我寫了一個簡單的代碼,問題是如何將按鈕添加到第一頁而不是第二頁。我有三個calsses(main.qml,componentCreation.js,ButtonD.qml)QML動態添加按鈕
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import "componentCreation.js" as MyScript
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
property var position: 0
Rectangle{
id: main
color: "#FFFFFF"
width: parent.width
height: parent.height
x:200
y:0
focus: true
StackView{
id: stack
initialItem: firstPage
Component{
id: firstPage
Rectangle{
id:firstRect
Label{
text: "firstPage"
x:100
}
Button{
text: "next"
onClicked:{
MyScript.createSpriteObjects(position)
position+=50
stack.push(secondPage)
}
}
}
}
Component{
id: secondPage
Rectangle{
id:secondRect
Label{
text: "secondPage"
x:100
}
Button{
text: "back"
onClicked: stack.push(firstPage)
}
}
}
}
}
}
在QT網站描述
JavaScript代碼(componentCreation.js)
var component;
var sprite;
function createSpriteObjects(number) {
component = Qt.createComponent("ButtonD.qml");
if (component.status == Component.Ready)
finishCreation(number);
else
component.statusChanged.connect(finishCreation);
}
function finishCreation(number) {
if (component.status == Component.Ready) {
sprite = component.createObject(main, {"x": 50, "y": number});
number += 50
if (sprite == null) {
console.log("Error creating object");
}
} else if (component.status == Component.Error) {
console.log("Error loading component:", component.errorString());
}
}
按鈕,我想添加
import QtQuick 2.0
import QtQuick.Controls 1.4
Button{
text: "created"
}
一個最小的例子會有所幫助。看起來答案取決於我們無法訪問的代碼。 – Mitch
增加了qml代碼... – Someone
'createObject()'總體上令人困惑。嘗試使用數據模型和中繼器。 – Velkan