Qt qml как проверить только один переключатель из ListView - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть qml ListView, который показывает языки и соответствующие переключатели, как показано в коде ниже. Язык Engli sh изначально выбран. Но с этим кодом я могу выбрать несколько языков. Я хочу выбрать только один (когда я выбираю один язык, другие автоматически не выбираются). Как это сделать?

 ListView{
    id: langlist
    clip: true

    model: ListModel {
        ListElement { selected:true; title: "English"}
        ListElement { selected:false;title: "French"}
        ListElement { selected:false;title: "German"}
        ListElement { selected:false;title: "Italian"}
    }

    delegate: Rectangle{
        id: langelement
        height: 70
        width: parent.width
        color: "transparent"
        Label{
            anchors.left: langelement.left
            anchors.leftMargin: 30
            anchors.top : langelement.top
            anchors.topMargin: 30
            text: model.title
            font.family: "Lato"
            font.pixelSize: 30
            font.bold: false
            color: "#FFFFFF"
        }

        Switch {
            id: control
            anchors.right: langelement.right
            anchors.rightMargin: 30
            anchors.top : langelement.top
            anchors.topMargin: 20
            checked: model.selected
        }
    }
} 

1 Ответ

0 голосов
/ 04 февраля 2020

Я бы сказал, что для этого вам следует использовать ComboBox, поскольку он служит для выбора одного элемента.

Если вы по-прежнему сохраняете ListView, вы можете сделать это следующим образом:

ListView{
    id: langlist
    clip: true

    property int selectedIndex : 0

    model: ListModel {
        ListElement { selected:true; title: "English"}
        ListElement { selected:false;title: "French"}
        ListElement { selected:false;title: "German"}
        ListElement { selected:false;title: "Italian"}
    }

    delegate: Rectangle{
        id: langelement
        height: 70
        width: parent.width
        color: "transparent"
        Label{
            anchors.left: langelement.left
            anchors.leftMargin: 30
            anchors.top : langelement.top
            anchors.topMargin: 30
            text: model.title
            font.family: "Lato"
            font.pixelSize: 30
            font.bold: false
            color: "#FFFFFF"
        }

        Switch {
            id: control
            anchors.right: langelement.right
            anchors.rightMargin: 30
            anchors.top : langelement.top
            anchors.topMargin: 20
            checked: selectedIndex == index

            onToggled: selectedIndex = index
        }
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...