Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Как сделать доступным свойство из QML ComboBox?



  • Делаю QML компонент на основе ComboBox.

    import QtQuick 2.12
    import QtQuick.Controls 2.12
    
    ComboBox {
       id: _ComboBox
       property alias textInBox: _delegateText.text
    
       delegate: ItemDelegate {
            contentItem: Text {
                id: _delegateText
                text: name
            }
       }
    }
    

    Когда я добавляю строчку:

    property alias textInBox: _delegateText.text
    

    Программа досрочно завершается. Без этой строчки работает.
    Ещё в выводе появляется ошибка: qrc:/modules/ExComboBox.qml:6:31: Invalid alias reference. Unable to find id "_delegateText"

    Как мне свойство text сделать доступным из вне?



  • Я нашел решение. В зависимости от переданной роли в ComboBox будет отображаться соответствующее поле из модели.

    ExComboBox.qml

    import QtQuick 2.12
    import QtQuick.Controls 2.12
    
    ComboBox {
       delegate: ItemDelegate {
          contentItem: Text {
             text: model[textRole]
          }
       }
    }
    

    Вам нужно указать textRole: "name" или любое другое поле из модели вместо "name".

    main.qml

    ExComboBox {
       currentIndex: 0
       model: GroupModel { }
       textRole: "name"
    }
    

    Примечание: Модель GroupModel я получаю из кода C++.


Log in to reply