改变QML控件的文本颜色

12

我正在使用一些QML控件,例如GroupBoxCheckBox,它们都有与之相关的文本。默认的文本颜色是黑色。然而,我将这些控件放在了深色背景上,所以我希望使用白色作为文本颜色。这些控件没有颜色属性,所以我不知道该怎么做。

CheckBox {
    text: "Check Me"
}
3个回答

8

我对GroupBox也遇到了同样的问题,因此我想为以后参考发布一个答案。使用HTML格式很容易解决这个问题。例如,要更改颜色:

GroupBox{ 
    title: "<font color=\"white\">my title</font>"
}

同样的方式可以改变大小和其他格式参数。


感谢您展示了在QML中使用HTML的可能性。 - Ahmed Fwela

5
你尝试过将它设置为复选框的整个子元素吗?
CheckBox {

    Text {
        text: "Check Me"
        color: "red"
    }
}

3

您需要使用style属性,根据CheckBoxStyle重新定义

import QtQuick 2.1
import QtQuick.Controls 1.0
import QtQuick.Controls.Styles 1.0

Rectangle {
    color: "black"
    CheckBox {
        style: CheckBoxStyle {
            label: Text {
                color: "white"
                text: "check Me"
            }
        }
    }
}

在使用CheckBoxStyle时,您可能需要重新定义整个组件而不仅仅是标签属性。


不幸的是,这似乎不起作用。CheckBoxStyle被下划线标记,就像找不到它一样,而我确实提供了导入(但编译正常)。唯一改变的是现在我根本看不到复选框标签了。 - roundtheworld
我刚升级到Qt Creator 2.8.1,虽然CheckBoxStyle不再带有下划线,但文本仍然没有变成白色。此外,我注意到使用上述代码后失去了许多其他样式元素。现在,当选中复选框时,它会显示为一个灰色的方块而不是一个实际的勾号。 - roundtheworld
1
@user1595510 我通过将标签组件中的文本属性移动来更新了我的答案。昨天我没有Qt可以尝试。在我的Qt版本(5.1.0)上,它将文本设置为白色。 - koopajah
1
那个起作用了!但是还有两件事情需要解决。首先,使用样式标签时,它似乎会覆盖所有的样式元素,所以当选中时我失去了复选框并得到了一个灰色的方块。其次,好像没有GroupBoxStyle类...是否可能修改GroupBox的文本颜色? - roundtheworld
正如我所说,如果您想要更改文本颜色并创建指示器(勾号)的自定义组件,则可能需要重新定义元素的整个样式,正如文档中所示。至于GroupBox,目前我没有找到更改文本颜色的方法。当使用CheckBoxStyle时,您会看到适合您平台的正确样式,并且它基于指示器内部的正方形。 - koopajah
请查看文档,他们一贯地重新定义整个样式,将现有样式作为新样式的基础进行复制。控件 1.0:https://doc.qt.io/qt-5/qtquickcontrolsstyles-index.html。 控件 2.0:https://doc.qt.io/qt-5/qtquickcontrols2-customize.html。 - Edward LeBlanc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接