Laz*_*yos 8 qt qml qtquick2 qtquickcontrols2
我是QML的新手,我想个性化我的按钮.我成功地改变了背景的颜色和边框颜色.但我根本没有成功改变按钮文字的颜色.我看到我们不再使用"风格"改变风格而是"背景",我不了解它的一切.
谢谢你的帮助.
Button {
id: buttonAC
text: qsTr("AC")
Layout.fillHeight: true
Layout.fillWidth: true
background: Rectangle {
border.color: "#14191D"
color: "#24292f"
// I want to change text color next
}
/*Text {
text: qsTr("AC")
color: "#F54035"
}*/
}
Run Code Online (Sandbox Code Playgroud)
根据文件
import QtQuick 2.6
import QtQuick.Controls 2.1
Button {
id: control
text: qsTr("Button")
contentItem: Text {
text: control.text
font: control.font
opacity: enabled ? 1.0 : 0.3
color: control.down ? "#17a81a" : "#21be2b"
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
}
background: Rectangle {
implicitWidth: 100
implicitHeight: 40
opacity: enabled ? 1 : 0.3
border.color: control.down ? "#17a81a" : "#21be2b"
border.width: 1
radius: 2
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用 QML 样式,还有另一种方法。将 2.12 替换为您的 QML 版本。
import QtQuick.Controls.Material 2.12
Button {
id: goToParenFolder
text: "Hi"
flat: true
Material.foreground: "red"
}
Run Code Online (Sandbox Code Playgroud)
该按钮的文本将为红色,其他按钮的文本将遵循材质样式着色。
要启用 QML 样式并添加 Material 主题,请添加QT += quickcontrols2到您的 .pro 文件中。
还将#include <QQuickStyle>和添加QQuickStyle::setStyle("Material");到 main.cpp
小智 6
我发现的两种最快的方法是使用以下未记录的属性:
Button {
....
palette.buttonText: "white"
}
Run Code Online (Sandbox Code Playgroud)
要在用户交互期间自定义文本颜色时更进一步,这里是 Button 源代码中的三元组,后跟要相应设置的属性列表:
color: control.checked || control.highlighted ? control.palette.brightText :
control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText
Run Code Online (Sandbox Code Playgroud)
特性:
control.palette.brightText
control.palette.highlight
control.palette.windowText
control.palette.buttonText
Run Code Online (Sandbox Code Playgroud)
第二个肮脏的黑客是使用 onCompleted 插槽,如下所示:
Button {
id: control
....
Component.onCompleted: {
control.contentItem.color = "white";
}
}
Run Code Online (Sandbox Code Playgroud)
如果你只是想改变你的文字颜色,你可以使用 html 字体样式Button会更好。这将保留其他Item类似按钮图标:
Button
{
//...
text: "<font color='#fefefe'>" + moudle + "</font>"
font.family: "Arial"
font.pointSize: 24
//...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11612 次 |
| 最近记录: |