[Solved] Change style property of QML element over event

  • I have a component which displays a custom combo box:

    @ 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 }

    The goal is to change the style property in "MenuButtonStyle" module.

    I tried it with the line

    @PropertyChanges { target: buttonCombo; style: MyButtonStyle }@

    but it gives me the error:

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

    If I replace the "MyComboBoxButtonStyle" directly with "MyButtonStyle" QT did not complain over a not defined reference.

    What is the problem? Is it not possible to change the style of a component like it is possible with CSS in HTML?

  • Hello and welcome to devnet,

    It is not possible to set a Component via javascriptcode since i remember. You'll have to do something like that:
    @property Component myStyle: MyButtonStyle{}
    PropertyChanges { target: buttonCombo; style: myStyle}@

    That should theoretically work for you.

  • Yeah, works like a charm! Perfect! Many thanks for quick response.

  • You're welcome, i'm glad that i could help you.

Log in to reply

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.