为什么无法为样式定义别名?例如
Button {
property alias color: theText.color
style: ButtonStyle {
label: Text {
id: theThext
}
}
}
给出
qml无效的别名引用无法找到
的IDtheText
答案 0 :(得分:3)
与this answer类似,这是因为alias
引用的项是动态加载的。像Label
这样的样式组件就是:Component
s。它们是用于创建实际加载Loader
的实际样式Item
的模板。
答案 1 :(得分:1)
这是我的解决方案(工作示例):
//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")
}
答案 2 :(得分:0)
使用默认字体大小
Button {
property int fontPixelSize: 0
style: ButtonStyle {
label: Text {
font.pixelSize: fontPixelSize ? fontPixelSize : font.pixelSize
text: control.text
}
}
答案 3 :(得分:0)
我的解决方案是像文本一样获取控件的属性。 您甚至可以将此样式保存到单独的样式文件中,并设置控件的labelColor属性。
Button {
property string labelColor: "yellow"
text: "hede"
style: ButtonStyle {
label: Text {
color: control.labelColor
text: control.text
}
}
}