QML动态窗口小部件列表

时间:2013-08-30 08:43:15

标签: qt listview qml qt-quick

我有一个QStringList属性,我基本上想要动态地将它变成一组单选按钮,这样当QStringList属性改变按钮的数量时,它们的标签会自动更新。

我可以排序使用ListView来做,但它有问题:

  1. 这不是一个真正的桌面小部件,因此您拥有所有移动设备的充足性。
  2. 我无法获得ListView选项,单选按钮检查可以很好地进行交互。
  3. 无论如何,这是我的尝试。我理想情况下喜欢在没有ListView的情况下这样做:

            ListView {
                id: myList
                orientation: ListView.Horizontal
    
                ExclusiveGroup {
                    id: myListExclusiveGroup
                }
    
                Component {
                    id: myDelegate
                    RadioButton {
                        text: modelData
                        onCheckedChanged: {
                            if (checked)
                                myList.currentIndex = index
                        }
                        exclusiveGroup: myListExclusiveGroup
                    }
                }
    
                model: myListOfStrings
                delegate: myDelegate
                focus: true
            }
    

1 个答案:

答案 0 :(得分:3)

感谢koopajah,我将其更改为使用Repeater,现在可以使用了。请注意,似乎Repeater将所有内容添加到其父级子项的 end 中,这意味着您无法依赖其在布局中的位置 - 您必须将其放在另一个布局中,像这样的例子:

        ExclusiveGroup {
            id: myListExclusiveGroup
        }
        RowLayout {
            Repeater {
                id: myList

                RadioButton {
                    text: modelData
                    exclusiveGroup: myListExclusiveGroup
                }

                model: myListOfStrings
                focus: true
            }
        }