如何从qmljavascript构建Qt快速对象?
这似乎微不足道,但我在互联网上找不到答案 我有一些QML代码,其中我有一些JavaScript代码,通过数组枚举,并为数组中的每个项创建一个按钮。我需要能够在JavaScript中初始化Button对象,但是运行如何从qmljavascript构建Qt快速对象?,javascript,qt,qml,Javascript,Qt,Qml,这似乎微不足道,但我在互联网上找不到答案 我有一些QML代码,其中我有一些JavaScript代码,通过数组枚举,并为数组中的每个项创建一个按钮。我需要能够在JavaScript中初始化Button对象,但是运行var btn=new Button()会导致类型错误 如何在运行时创建Qt Quick对象?Qml提供了许多方法 使用中继器(或根据需要使用其他基于模型的实例化器,如列表视图,实例化器),其模型可以是数组: Row { Repeater { id: repeat
var btn=new Button()
会导致类型错误
如何在运行时创建Qt Quick对象?Qml提供了许多方法 使用
中继器
(或根据需要使用其他基于模型的实例化器,如列表视图
,实例化器
),其模型可以是数组:
Row {
Repeater {
id: repeater
delegate: Button {
text: modelData
}
Component.onCompleted: repeater.model = ["button1", "button2"] // JS array
}
}
如果数组比这更复杂,则可以将数组解析为ListModel:
Row {
Repeater {
id: repeater1
model: ListModel { }
delegate: Button {
text: model.myText
}
Component.onCompleted: {
let array = ["button1", "button2"]
for (let i = 0; i < array.length; i++) {
repeater1.model.append({myText: array[i]})
}
}
}
}
行{
中继器{
id:repeater1
模型:ListModel{}
代表:按钮{
text:model.myText
}
Component.onCompleted:{
让数组=[“按钮1”,“按钮2”]
for(设i=0;i
正如JarMan所建议的,在JS中动态创建按钮(有许多方法可以实现此目的,如图所示):
行{
Component.onCompleted:{
让数组=[“按钮1”,“按钮2”]
for(设i=0;i
所有这些例子都会产生相同的结果:
您正在寻找动态对象创建。这些文件都是。谢谢你的回答。我还有一个问题:如果我想把按钮的大小调整到,比如说,家长大小的三分之一,我该怎么做呢?我修正了它。这与我的按钮的父控件试图以一种奇怪的方式排列它们有关。
Row {
Component.onCompleted: {
let array = ["button1", "button2"]
for (let i = 0; i < array.length; i++) {
let newButton = buttonComponent.createObject(this, {})
newButton.text = array[i]
}
}
Component {
id: buttonComponent
Button { }
}
}