Псевдонимы в стилях

Почему нельзя определить псевдонимы для стилей? Например

Button {

    property alias color: theText.color

    style: ButtonStyle {
        label: Text {
            id: theThext  
        }
    }
}

дает

qml неверная ссылка на псевдоним не может найти идентификатор для theText


person perencia    schedule 30.04.2014    source источник
comment
Типа соответствующего вопроса: stackoverflow. ком/вопросы/14345552/   -  person Mitch    schedule 01.05.2014


Ответы (4)


Как и в этом ответе, это связано с тем, что элемент, на который ссылается alias, загружается динамически. Компоненты стиля, такие как Label просто так: Components. Это шаблоны, которые используются для создания реальных стилей Item, которые фактически загружаются с помощью Loader.

person Mitch    schedule 30.04.2014

вот мое решение (рабочий пример):

//MyCustomBtn.qml
import QtQuick 2.0
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2

Button {
    function setFontColor(fontColor){color_ = fontColor}
    property string color_: "black"

    style: ButtonStyle {
        label: Text {
            color: color_
            text: control.text
        }
    }
}

//MyTest.qml
MyCustomBtn {
    text: qsTr("Hello World")
    anchors.horizontalCenter: parent.horizontalCenter
    anchors.verticalCenter: parent.verticalCenter

    Component.onCompleted: setFontColor("red")
}
person miro    schedule 20.02.2015

С размером шрифта по умолчанию

Button {
    property int fontPixelSize: 0
    style: ButtonStyle {
        label: Text {
            font.pixelSize: fontPixelSize ? fontPixelSize : font.pixelSize
            text: control.text
        }
    }
person Ivan Kush    schedule 08.08.2015

Мое решение состоит в том, чтобы получить свойство управления точно так же, как и текст. Вы даже можете сохранить этот стиль в отдельный файл стилей и установить свойство labelColor элемента управления.

Button {
    property string labelColor: "yellow"
    text: "hede"
    style: ButtonStyle {
        label: Text {
            color: control.labelColor
            text: control.text
        }
    }
}
person GO.exe    schedule 15.04.2019