首页 文章

QML动态窗口小部件列表

提问于
浏览
1

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

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

  • 这不是一个真正的桌面小部件,所以你拥有所有的移动设备 .

  • 我无法获得ListView选项,单选按钮检查可以很好地进行交互 .

无论如何,这是我的尝试 . 我理想情况下喜欢在没有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 回答

  • 3

    感谢koopajah,我将其更改为使用 Repeater ,现在可以使用了 . 请注意,似乎 Repeater 将所有内容添加到其父级的末尾's children, which means you can'依赖于它在布局中的位置 - 您必须将其放在另一个布局中,例如:

    ExclusiveGroup {
                id: myListExclusiveGroup
            }
            RowLayout {
                Repeater {
                    id: myList
    
                    RadioButton {
                        text: modelData
                        exclusiveGroup: myListExclusiveGroup
                    }
    
                    model: myListOfStrings
                    focus: true
                }
            }
    

相关问题