QML Установите ExclusiveGroup на RadioButton в ListView программно - PullRequest
0 голосов
/ 02 ноября 2018

Добрый день

Я пытаюсь создать динамический просмотр списка, который содержит элемент управления RadioButton. Я хочу иметь 4 строки, и каждая строка будет содержать 4 радиокнопки, а кнопки в каждой строке принадлежат одной группе ExclusiveGroup

Я пытался установить ExclusiveGroup напрямую при создании ListElement, но он выдает ошибку

ExclusiveGroup {id: eg1}
ExclusiveGroup {id: eg2}
ExclusiveGroup {id: eg3}

ListView {
    id: listView
    anchors.fill: parent
    model: myModel
    delegate: RowLayout {
        //property ExclusiveGroup eg: null
        spacing: 5
        RadioButton {
            id: r1
            text: option_1
            //exclusiveGroup: eg
        }
        RadioButton {
            id: r2
            text: option_2
            //exclusiveGroup: eg
        }
        RadioButton {
            id: r3
            text: option_3
            //exclusiveGroup: eg
        }
        RadioButton {
            id: r4
            text: option_4
            //exclusiveGroup: eg
        }
    }
}

ListModel {
    id: myModel
    ListElement {option_1: "8"; option_2: "9"; option_3: "37"; option_4: "27"}//; eg: eg1}
    ListElement {option_1: "12"; option_2: "15"; option_3: "16"; option_4: "17"} //; eg: eg2);
    ListElement {option_1: "1936"; option_2: "1938"; option_3: "1939"; option_4: "1940"} //; eg: eg3);
}

если я добавлю часть, например: eg1 в ListElement, тогда это выдаст ошибку

ListElement: cannot use script for property value

1 Ответ

0 голосов
/ 02 ноября 2018

Если вы хотите, чтобы кнопки в каждой строке были эксклюзивными, вы можете сделать их частью делегата:

ListModel {
    id: myModel
    ListElement {option_1: "8"; option_2: "9"; option_3: "37"; option_4: "27"}
    ListElement {option_1: "12"; option_2: "15"; option_3: "16"; option_4: "17"}
    ListElement {option_1: "1936"; option_2: "1938"; option_3: "1939"; option_4: "1940"}
}

ListView {
    id: listView
    anchors.fill: parent
    model: myModel
    delegate: RowLayout {
        ExclusiveGroup { id: group } // <---
        spacing: 5
        RadioButton {
            id: r1
            text: option_1
            exclusiveGroup: group
        }
        RadioButton {
            id: r2
            text: option_2
            exclusiveGroup: group
        }
        RadioButton {
            id: r3
            text: option_3
            exclusiveGroup: group
        }
        RadioButton {
            id: r4
            text: option_4
            exclusiveGroup: group
        }
    }
}
...