QPalette类包含每个控件状态的颜色组,专门用于管理控件的外观显示。
Header: | #include <QPalette> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 所有成员的列表,包括继承的成员
- 已弃用的成员(官方不推荐使用)
- QPalette 是隐式共享类的一部分。
【详细描述】
每个窗体和控件都包含一个QPalette对象。
Qt中的所有控件都包含一个调色板QPalette,并使用各自的调色板来绘制自己,这使用户界面易于配置并保持风格的统一。
QPalette对象由三个颜色组构成:Active (激活/有焦点)、Disabled禁用和Inactive(非激活/无焦点)。活动窗口和非活动窗口都可以包含禁用控件。除禁用外,大多数样式中的“活动”和“非活动”看起来相同。
可以使用 setColor() 和 setBrush() 为调色板的任何颜色组中的特定角色设置颜色和画笔。颜色组包含控件用于绘制自身的一组颜色。我们建议控件使用QPalette对象中的颜色组角色,例如“前景”和“基础”,而不是“红色”或“绿色”等文字颜色。颜色角色在文档中枚举定义。
我们强烈建议您使用当前样式的默认调色板(由 QGuiApplication::palette() 返回),并根据需要进行修改。这是由Qt的控件在绘制时完成的。
设置控件颜色的方法是先调用QWidget::palette()获取当前面板,修改它为自定义的值后再通过方法QWidget::setPalette设置为新修改的面板。
QPalette palette = widget->palette(); palette.setColor(QPalette::Window, Qt::lightGray); //改变控件背景色 palette.setColor(QPalette::WindowText, Qt::blue); //改变控件字体颜色 ... widget->setPalette(palette);
若要修改颜色组,请调用函数setColor() 和 setBrush(),具体取决于您想要的是纯颜色还是像素图图案。还有对应的color()和brush() 获取函数 ,以及一个常用的 ColorRole函数来获取当前颜色组的颜色角色:window(), windowText(), base()等。
您可以使用复制构造函数复制调色板,并使用 isCopyOf() 测试两个调色板是否相同。
QPalette 通过使用隐式共享进行了优化,因此将 QPalette 对象作为参数传递非常有效。
警告: 某些样式不会将调色板用于所有绘图,例如,如果它们使用本机主题引擎。
参见QApplication::setPalette(), QWidget::setPalette(), and QColor.
【公共类型】
enum | ColorGroup { Disabled(禁用), Active(激活), Inactive(非活动), Normal(等价于激活) } |
enum | ColorRole { Window, WindowText, Base, AlternateBase, ToolTipBase, …, NoRole } |
ColorRole 枚举定义当前 GUI 中使用的不同符号颜色角色。
核心角色是:
枚举名 | 值 | 描述 |
---|---|---|
QPalette::Window | 10 | 一般背景色。 |
QPalette::WindowText | 0 | 一般前景色。 |
QPalette::Base | 9 | 主要用作文本输入控件的背景色,但也可用于其他绘画,例如组合框下拉列表和工具栏手柄的背景。它通常是白色或其他浅色。 |
QPalette::AlternateBase | 16 | 在具有交替行颜色的视图中用作备用背景色(请参见QAbstractItemView::setAlternatingRowColors())。 |
QPalette::ToolTipBase | 18 | 用作 QToolTip and QWhatsThis的背景色。工具提示使用 的“非活动”颜色组,因为工具提示不是活动窗口。 |
QPalette::ToolTipText | 19 | 用作 QToolTip and QWhatsThis的前景色。工具提示使用 的“非活动”颜色组,因为工具提示不是活动窗口。 |
QPalette::PlaceholderText | 20 | 用作各种文本输入控件的占位符颜色。这个枚举值已经在Qt 5.12中引入 |
QPalette::Text | 6 | 与Base一起使用的前景色。这通常与WindowText相同,在这种情况下,它必须提供与Window和Base的良好对比度。 |
QPalette::Button | 1 | 常规按钮背景颜色。此背景可能不同,因为某些Window样式要求按钮使用不同的背景颜色。 |
QPalette::ButtonText | 8 | 与Botton颜色一起使用的前景色。 |
QPalette::BrightText | 7 | 一种与WindowText非常不同的文本颜色,与Dark(黑暗)有很好的对比。通常用于需要绘制的文本,其中文本或窗口文本会比较差,如按下按钮。注意,文本颜色可以用于单词以外的其他用途;文本颜色通常用于文本,但将文本颜色角色用于线条、图标等是很常见的。 |
有一些颜色角色主要用于 3D 斜角和阴影效果。所有这些通常都派生自Window,并且以依赖于该关系的方式使用,按钮依赖于它来使斜面看起来更有吸引力。
枚举名 | 值 | 描述 |
---|---|---|
QPalette::Light | 2 | 比Button 颜色浅。 |
QPalette::Midlight | 3 | 在 Button 和Light 之间。 |
QPalette::Dark | 4 | 比 Button 更暗。 |
QPalette::Mid | 5 | 在 Button 和 Dark 之间。 |
QPalette::Shadow | 11 | 一种非常深的颜色。默认情况下,阴影颜色为Qt::black 。 |
选定(标记)项目有两个角色:
枚举名 | 值 | 描述 |
---|---|---|
QPalette::Highlight | 12 | 用于指示选定项或当前项的颜色。默认情况下,突出显示颜色为Qt::darkBlue。 |
QPalette::Accent | 21 | 通常与“基本”Base、“窗口”Window和“按钮”Button颜色形成对比或互补的颜色。它通常代表用户对桌面个性化的选择。交互式组件的样式是一个典型的用例。除非显式设置,否则默认为“突出显示”。 |
QPalette::HighlightedText | 13 | 与Highlight形成对比的文本颜色。默认情况下,突出显示的文本颜色为 。 |
有两种颜色角色与超链接相关:
枚举名 | 值 | 描述 |
---|---|---|
QPalette::Link | 14 | 用于未访问超链接的文本颜色。默认link颜色为Qt::blue。 |
QPalette::LinkVisited | 15 | 用于已访问超链接的文本颜色。默认linkvisited 颜色为Qt::magenta。 |
请注意,在Qt中渲染富文本时,我们不会使用Link
和 LinkVisited
角色,我们建议您使用CSS和QTextDocument::setDefaultStyleSheet()函数来改变链接的外观。例如:
QTextBrowser browser;
QColor linkColor(Qt::red);
QString sheet = QString::fromLatin1("a { text-decoration: underline; color: %1 }").arg(linkColor.name());
browser.document()->setDefaultStyleSheet(sheet);
枚举名 | 值 | 描述 |
---|---|---|
QPalette::NoRole | 17 | 没有角色。此特殊角色通常用于指示尚未分配角色。 |
【公有函数】
QPalette() | |
构造一个没有设置颜色角色的空QPalette对象。 当把它用作QWidget的调色板时,颜色按QWidget::setPalette()所述进行解析。 | |
QPalette(const QColor &button) | |
QPalette(Qt::GlobalColor button) | |
依据button颜色构造QPalette。其他颜色根据该颜色自动计算。窗口也将是button的颜色。 | |
QPalette(const QColor &button, const QColor &window) | |
依据button和window窗口颜色构造QPalette。其他颜色根据该颜色自动计算。 | |
QPalette(const QBrush &windowText, const QBrush &button, const QBrush &light, const QBrush &dark, const QBrush &mid, const QBrush &text, const QBrush &bright_text, const QBrush &base, const QBrush &window) | |
构造一个QPalette。您可以为windowText、button、light、dark、mid、Text、bright_text、base和window传递画笔、位图或平面。 | |
QPalette(const QPalette &p) | |
构造p的副本,由于隐式共享,这个构造很快。 | |
QPalette(QPalette &&other) | |
移动构造一个QPalette实例,使它指向另一个对象所指向的同一对象。 从移动构造后,只能分配或销毁other,任何别的操作都将导致未定义的行为。 | |
析构。 | ~QPalette() |
const QBrush & | accent() const |
返回当前颜色组的强调(accent)画笔。 | |
const QBrush & | alternateBase() const |
返回当前颜色组的交替基本笔刷(alternate base brush)。 | |
const QBrush & | base() const |
返回当前颜色组的基本笔刷。 | |
const QBrush & | brightText() const |
返回当前颜色组的亮文本前景画笔(bright text foreground brush)。 | |
const QBrush & | brush(QPalette::ColorGroup group, QPalette::ColorRole role) const |
返回指定的group颜色组中的role颜色角色的笔刷。 | |
const QBrush & | brush(QPalette::ColorRole role) const |
返回当前颜色组中的role颜色角色的笔刷。 | |
const QBrush & | button() const |
返回当前颜色组的按钮画笔。 | |
const QBrush & | buttonText() const |
返回当前颜色组的按钮文本前景画笔。 | |
qint64 | cacheKey() const |
返回一个标识此QPalette对象内容的数字。如果不同的QPalette对象引用相同的内容,则它们可以具有相同的键。当QPalette改变时,cacheKey()也会改变。 | |
const QColor & | color(QPalette::ColorGroup group, QPalette::ColorRole role) const |
返回group指定QPalette中用于给定颜色角色role的颜色。 | |
const QColor & | color(QPalette::ColorRole role) const |
返回当前QPalette中用于给定颜色角色role的颜色。 | |
QPalette::ColorGroup | currentColorGroup() const |
返回当前QPalette。 | |
const QBrush & | dark() const |
返回当前颜色组的dark笔刷。 | |
const QBrush & | highlight() const |
返回当前颜色组的 highlight 笔刷。 | |
const QBrush & | highlightedText() const |
返回当前颜色组的 highlighted text 笔刷。 | |
bool | isBrushSet(QPalette::ColorGroup cg, QPalette::ColorRole cr) const |
如果先前已在此调色板上设置了颜色组cg和颜色角色cr,则返回true,否则返回false。 颜色组cg应属于QPalette::NColorGroups,也可以使用QPalette::Current,这种情况下,会使用先前设置的当前颜色组。 ColorRole cr 应属于QPalette::NColorRoles。 | |
bool | isCopyOf(const QPalette &p) const |
如果当前QPalette和p是作为彼此的副本创建,并且之后都没有被修改,则返回true,否则返回false。此函数比“==”严格得多。 | |
bool | isEqual(QPalette::ColorGroup cg1, QPalette::ColorGroup cg2) const |
如果颜色组cg1等于cg2,则返回true(通常很快返回),否则返回false。 | |
const QBrush & | light() const |
返回当前颜色组的light笔刷。 | |
const QBrush & | link() const |
返回当前颜色组的未访问链接文本画笔。 | |
const QBrush & | linkVisited() const |
返回当前颜色组的已访问链接文本画笔。 | |
const QBrush & | mid() const |
返回当前颜色组的mid画笔。 | |
const QBrush & | midlight() const |
返回当前颜色组的midlight画笔。 | |
const QBrush & | placeholderText() const |
返回当前颜色组的占位符文本画笔。 | |
QPalette | resolve(const QPalette &other) const |
返回一个新的QPalette,它是this实例和other实例的并集。以this实例中设置的颜色角色优先。 | |
void | setBrush(QPalette::ColorRole role, const QBrush &brush) |
将给定角色role的画笔设置为调色板中所有组的brush。 | |
void | setBrush(QPalette::ColorGroup group, QPalette::ColorRole role, const QBrush &brush) |
将给定角色role的画笔设置为调色板中group组的brush。 | |
void | setColor(QPalette::ColorGroup group, QPalette::ColorRole role, const QColor &color) |
为指定的color设置group颜色组中的role角色。 | |
void | setColor(QPalette::ColorRole role, const QColor &color) |
为指定的color设置所有颜色组中的role角色。 | |
void | setColorGroup(QPalette::ColorGroup cg, const QBrush &windowText, const QBrush &button, const QBrush &light, const QBrush &dark, const QBrush &mid, const QBrush &text, const QBrush &bright_text, const QBrush &base, const QBrush &window) |
将组设置为cg,您可以为windowText、button、light、dark、mid、Text、bright_text、base和window传递画笔、位图或平面颜色。 | |
void | setCurrentColorGroup(QPalette::ColorGroup cg) |
将调色板的当前颜色组设置为cg。 | |
const QBrush & | shadow() const |
返回当前颜色组的shadow画笔。 | |
void | swap(QPalette &other) |
将此QPalette实例与other实例交换。这个功能非常快,且不会失败。 | |
const QBrush & | text() const |
返回当前颜色组的文本前景 text foreground 画笔。 | |
const QBrush & | toolTipBase() const |
返回当前颜色组的工具提示基本 tool tip base画笔。该画笔由QToolTip和 QWhatsThis使用。 注意:工具提示使用QPalette的非活动颜色组,因为工具提示不是活动窗口。 | |
const QBrush & | toolTipText() const |
返回当前颜色组的工具提示文本 tool tip text画笔。(其余同上) | |
const QBrush & | window() const |
返回当前颜色组的 window(全局背景)画笔。 | |
const QBrush & | windowText() const |
返回当前颜色组的 window text(全局前景)画笔。 | |
QVariant | operator QVariant() const |
以QVariant形式返回调色板。 | |
bool | operator!=(const QPalette &p) const |
QPalette & | operator=(const QPalette &p) |
QPalette & | operator=(QPalette &&other) |
bool | operator==(const QPalette &p) const |
【相关非成员】
QDataStream & | operator<<(QDataStream &s, const QPalette &p) |
QDataStream & | operator>>(QDataStream &s, QPalette &p) |