QML: ComboBox внутри DelegateChoice не может прочитать значения из модели TableView Controls 2. (model.display не определено) - PullRequest
1 голос
/ 06 апреля 2020

У меня есть ControlS 2 tableView вместе с qt.labs.model 1.0. Внутри первого DelegateChoice - comboBox, я пытаюсь прочитать значение столбца «группа» (столбец 3) с помощью model.display, но отображение не определено. Обратите внимание, что во втором DelegateChoice - TextField, я легко могу прочитать значения столбца с помощью model.display.

В любом случае, как мне прочитать столбец «группа» внутри ComboBox.

TableView {
    id: table 
    anchors.fill: parent
    clip: true
    columnSpacing: 4
    rowSpacing: 4
    columnWidthProvider: column => Math.min(600, model.columnWidth(column))

    model: TableModel {
        id: tableModel
        TableModelColumn { display: "name" }
        TableModelColumn { display: "domain" }
        TableModelColumn { display: "port" }
        TableModelColumn { display: "group" }
        TableModelColumn { display: "status" }
        TableModelColumn { display: "mac" }

        rows: [
            { name:"dev1", domain:"mydomain", port: 3719, group: "group1", status:"available", mac:"192.168.1.1" },
            { name:"dev1", domain:"mydomain", port: 3719, group: "group2", status:"available", mac:"192.168.1.1" }
        ]
    }

    delegate: DelegateChooser {
        DelegateChoice {
            column: 3
            delegate: ComboBox {
                textRole: "text"
                valueRole: "value"
                model: groupsModel
                currentIndex: indexOfValue(model.display)
            }
        }
        DelegateChoice {
            delegate: TextField {
                text: model.display
                implicitWidth: 140
                onAccepted: model.display = text
            }
        }
    }
}

1 Ответ

1 голос
/ 06 апреля 2020

Проблема в том, что существует конфликт между свойствами, так как наблюдается, что QComboBox имеет свойство "модель", что к его значениям обращаются с помощью "model.rolename", которое также имеет TableView.

One Решение состоит в том, чтобы просто использовать «display», так как рекомендуется, чтобы groupsModel не имела этого имени в роли:

currentIndex: indexOfValue(display)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...