Изменить свойство стиля элемента QML над событием

У меня есть компонент, который отображает настраиваемое поле со списком:

    Column {
        anchors.top: parent.top
        anchors.topMargin: 200
        anchors.left: parent.left
        anchors.leftMargin: 30
        Rectangle {
            id: rectangle1
            signal comboClicked
            Column {
                id: column_button
                MenuButtonStyle {
                    id: buttonCombo
                    style: MyComboBoxButtonStyle {
                        label: ButtonTextStyle {
                            text: "Choose"
                        }
                    }
                }
            }
            Column {
                id: column1
                anchors.left: column_button.right
                anchors.leftMargin: -25
                anchors.top: parent.top
                anchors.topMargin: 3
                Image {
                    id: image1
                    width: 16
                    source: "arrow_down.png"
                }
            }                
            Keys.onReturnPressed: {
                rectangle1.state = rectangle1.state==="dropDown"?"":"dropDown"
                console.log("Open Drop Down..")
            }

            states: State {
                  name: "dropDown";
                  PropertyChanges { target: buttonCombo; style: MyButtonStyle }
            }

        }
    }

Цель состоит в том, чтобы изменить свойство стиля в модуле MenuButtonStyle.

Я пробовал это с линией

PropertyChanges { target: buttonCombo; style: MyButtonStyle }

но это дает мне ошибку:

file:///D:/projekte/qt_quick/FirstTest/MainPane.qml:82: ReferenceError: MyButtonStyle is not defined

Если я заменю MyComboBoxButtonStyle непосредственно на MyButtonStyle, QT не пожаловался на неопределенную ссылку.

В чем проблема? Разве нельзя изменить стиль компонента, как это возможно с помощью CSS в HTML?


person sk2212    schedule 19.03.2014    source источник


Ответы (1)


Я не уверен, как написан ваш MyButtonStyle, но вы можете создать экземпляр MyButtonStyle в корневом компоненте и использовать его во всем приложении:

MyButtonStyle { id: myButtonStyle }

или вы можете определить его как одноэлементный объект.

Ссылка: http://qt-project.org/wiki/QmlStyling

person sam    schedule 19.03.2014