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第二个参数怎么用的主要内容,如果未能解决你的问题,请参考以下文章

linux中sprintf函数怎么用

QML在Component中使用createObject填充ColumnLayout

用visual c ++时,当一个程序运行后,怎么运行第二个程序啊

C语言中关于通过命令行获取参数的编程

C语言_access函数怎么用

VBS+bat后强大的功能