1

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

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

  1. 它不是真正的桌面小部件,因此您拥有所有的移动弹性。
  2. 我无法让 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
        }
4

1 回答 1

3

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

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

                RadioButton {
                    text: modelData
                    exclusiveGroup: myListExclusiveGroup
                }

                model: myListOfStrings
                focus: true
            }
        }
于 2013-08-30T10:13:24.950 回答