qml中createobject第二个参数怎么用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qml中createobject第二个参数怎么用相关的知识,希望对你有一定的参考价值。
MultiLine 属性多行ScrollBars 属性返回或设置一个值,该值指示一个对象是有水平滚动条还是有垂直滚动条。在运行时是只读的。语法object.ScrollBarsobject 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。 参考技术A qml中。用object createObject(QtObject parent, object properties)来创建一个组件,第一参数是用于定义父级对象,第二个参数是用于设置组件的一些属性,比如:"x": 100, "y": 100,来设置组件属性位置信息,也可以换成其他。多选 QML 组合框
【中文标题】多选 QML 组合框【英文标题】:Multiselect QML ComboBox 【发布时间】:2018-10-24 12:08:43 【问题描述】:我正在构建我的第一个应用程序,我希望有一个包含某些选项的组合框; when 1 of these options are selected, I want another combobox to be populated with certain options.此外,如果用户在第一个组合框中选择第二个选项,那么第二个组合框将填充不同的选项。这可能吗?我一直在玩弄它,似乎不知道该怎么做。
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import QtQuick.Controls.Material 2.2
ApplicationWindow
id: rootWindow
visible: true
width: 1000
height: 800
title: qsTr("Hello World!")
ComboBox
id: country
model: ["USA", "India"]
onActivated:
console.debug("CombBox.onActivated", index)
console.assert(currentIndex == index, "Assertion failed: property currentIndex not equal to actual parameter index")
ComboBox
id: state
model: ["California", "Assam"]
onActivated:
console.debug("CombBox.onActivated", index)
console.assert(currentIndex == index, "Assertion failed: property currentIndex not equal to actual parameter index")
ComboBox
id: city
model: ["Los Angeles", "Dispur"]
onActivated:
console.debug("CombBox.onActivated", index)
console.assert(currentIndex == index, "Assertion failed: property currentIndex not equal to actual parameter index")
ComboBox
id: zip
model: ["90001", "781005"]
onActivated:
console.debug("CombBox.onActivated", index)
console.assert(currentIndex == index, "Assertion failed: property currentIndex not equal to actual parameter index")
任何关于如何传递这些信号的想法都将受到高度赞赏
【问题讨论】:
能否请您包含其余代码(例如导入、窗口等),以便它是我们可以运行的最小示例?这也可以让我们看到您正在使用哪个 Qt Quick Controls 导入。 代码现在详细@Mitch @WabwireLevis 我想我理解你,但例如你有组合框国家,假设你选择美国,该州应该提供哪些数据?如果改为选择印度,应该显示什么? @eyllanesc 我需要与jsfiddle.net/patelriki13/m1ezs70o相同的功能 【参考方案1】:我会像在 javascript 中那样做:
import QtQuick 2.11
import QtQuick.Window 2.11
import QtQuick.Layouts 1.11
import QtQuick.Controls 2.4
Window
visible: true
width: 640
height: 480
property var countryStateInfo:
"USA":
"California":
"Los Angeles": ["90001", "90002", "90003", "90004"],
"San Diego": ["92093", "92101"]
,
"Texas":
"Dallas": ["75201", "75202"],
"Austin": ["73301", "73344"]
,
"India":
"Assam":
"Dispur": ["781005"],
"Guwahati" : ["781030", "781030"]
,
"Gujarat":
"Vadodara" : ["390011", "390020"],
"Surat" : ["395006", "395002"]
ColumnLayout
anchors.centerIn: parent
ComboBox
id: box1
currentIndex: -1
model: getData(countryStateInfo)
ComboBox
id: box2
model: box1.currentIndex < 0 ? [] : getData(countryStateInfo[box1.displayText])
onModelChanged: currentIndex = -1
ComboBox
id: box3
model: box2.currentIndex < 0 ? [] : getData(countryStateInfo[box1.displayText][box2.displayText])
onModelChanged: currentIndex = -1
ComboBox
id: box4
model: box3.currentIndex < 0 ? [] : countryStateInfo[box1.displayText][box2.displayText][box3.displayText]
onModelChanged: currentIndex = -1
function getData(arr)
var retval = [];
for(var element in arr)
retval.push(element)
return retval;
也许这段代码需要一些重构,我只是不知道如何使用关联数组作为模型
【讨论】:
以上是关于qml中createobject第二个参数怎么用的主要内容,如果未能解决你的问题,请参考以下文章
QML在Component中使用createObject填充ColumnLayout