QPalette 类

QPalette 类包含每个窗口状态的颜色组。 更多...

头文件 #include <QPalette>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui

公共类型

枚举颜色组 { 禁用, 激活, 非激活, 普通 }
枚举颜色角色 { 窗口, 窗口文本, 基础, 替代基础, 工具提示基础, …, 无角色 }

公共函数

QPalette()
QPalette(const QColor &button)
QPalette(Qt::GlobalColor button)
QPalette(const QColor &button, const QColor &window)
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(const QPalette &p)
QPalette(QPalette &&other)
~QPalette()
(since 6.6) const QBrush &突出() const
const QBrush &替代基础() const
const QBrush &基础() const
const QBrush &亮文本() const
const QBrush &画笔(QPalette::ColorGroup group, QPalette::ColorRole role) const
const QBrush &画笔(QPalette::ColorRole role) const
const QBrush &按钮() const
const QBrush &按钮文本() const
qint64缓存键() const
const QColor &颜色(QPalette::ColorGroup group, QPalette::ColorRole role) const
const QColor &颜色(QPalette::ColorRole role) const
QPalette::ColorGroup当前颜色组() const
const QBrush &暗色() const
const QBrush &高亮() const
const QBrush &高亮文本() const
boolisBrushSet(QPalette::ColorGroup cg, QPalette::ColorRole cr) const
boolisCopyOf(const QPalette &p) const
boolisEqual(QPalette::ColorGroup cg1, QPalette::ColorGroup cg2) const
const QBrush &亮色() const
const QBrush &link() const
const QBrush &linkVisited() const
const QBrush &mid() const
const QBrush &midlight() const
const QBrush &placeholderText() const
QPaletteresolve(const QPalette &other) const
voidsetBrush(QPalette::ColorRole role, const QBrush &brush)
voidsetBrush(QPalette::ColorGroup group, QPalette::ColorRole role, const QBrush &brush)
voidsetColor(QPalette::ColorGroup group, QPalette::ColorRole role, const QColor &color)
voidsetColor(QPalette::ColorRole role, const QColor &color)
voidsetColorGroup(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)
voidsetCurrentColorGroup(QPalette::ColorGroup cg)
const QBrush &shadow() const
voidswap(QPalette &other)
const QBrush &text() const
const QBrush &toolTipBase() const
const QBrush &toolTipText() const
const QBrush &window() const
const QBrush &windowText() const
QVariantoperator QVariant() const
booloperator!=(const QPalette &p) const
QPalette &operator=(const QPalette &p)
QPalette &operator=(QPalette &&other)
(since 6.6) booloperator==(const QPalette &p) const
QDataStream &operator<<(QDataStream &s, const QPalette &p)
QDataStream &operator>>(QDataStream &s, QPalette &p)

详细描述

调色板由三个颜色组组成:活动禁用非活动。Qt中的所有小部件都包含调色板并使用其调色板来绘制自身。这使得用户界面易于配置,并更容易保持一致。

如果您创建了一个新的小部件,我们强烈建议您使用调色板中的颜色,而不是直接编写特定颜色。

颜色组

  • 活动组用于具有键盘焦点的工作窗口。
  • 非活动组用于其他窗口。
  • 禁用组用于因某些原因而禁用的控件(而不是窗口)。

活动和非活动窗口都可以包含禁用控件。(禁用控件通常被称为不可访问或灰显。)

在大多数样式表中,活动和非活动看起来相同。

可以使用 setColor() 和 setBrush() 在调色板的颜色组的任何特定角色中设置颜色和画笔。颜色组包含小部件用于绘制自身的颜色组。我们建议小部件使用调色板的“前景”和“基础”等颜色组角色,而不是“红色”或“青绿色”等直接颜色。颜色角色在 ColorRole 文档中枚举和定义。

我们强烈建议您使用当前样式的默认调色板(由 QGuiApplication::palette() 返回)并进行必要的修改。这是通过 Qt 小部件绘制时实现的。

要修改颜色组,请调用 setColor() 和 setBrush() 函数,具体取决于您是想使用纯色还是位图图案。

也存在对应的 color() 和 brush() 获取器,以及一个常用的便利函数来获取当前 ColorGroupColorRolewindow()、windowText()、base() 等。

您可以使用拷贝构造函数来复制调色板,并使用 isCopyOf() 来测试两个调色板是否完全相同。

QPalette 通过 隐式共享 进行优化,因此将 QPalette 对象作为参数传递非常高效。

注意:某些样式并不使用调色板进行所有绘图,例如它们使用原生主题引擎。Windows Vista 和 macOS 风格都是这种情况。

另请参阅:QApplication::setPalette()、QWidget::setPalette() 和 QColor

成员类型文档

枚举 QPalette::ColorGroup

常数描述
QPalette::Disabled1 
QPalette::Active0 
QPalette::Inactive2 
QPalette::NormalActiveActive 的同义词

枚举 QPalette::ColorRole

Color Roles

ColorRole 枚举定义了当前 GUI 中使用的不同符号颜色角色。

核心角色包括:

常数描述
QPalette::Window10通用背景颜色。
QPalette::WindowText0通用前景颜色。
QPalette::Base9通常用作文本输入小部件的背景颜色,但也可用于其他绘画,例如组合框下拉列表和工具栏手柄的背景。它通常为白色或其他浅色。
QPalette::AlternateBase16用作具有交替行颜色的视图中的替代背景颜色(请参阅 QAbstractItemView::setAlternatingRowColors())。
QPalette::ToolTipBase18用作 QToolTipQWhatsThis 的背景颜色。工具提示使用 QPalette 的非活动颜色组,因为工具提示不是活动窗口。
QPalette::ToolTipText19用作 QToolTipQWhatsThis 的前景颜色。工具提示使用 QPalette 的非活动颜色组,因为工具提示不是活动窗口。
QPalette::PlaceholderText20用作各种文本输入小部件的占位符颜色。此枚举值自 Qt 5.12 被引入。
QPalette::Text6用于与 Base 一起使用的背景颜色。这通常与 WindowText 相同,在这种情况下,它必须与 WindowBase 提供良好的对比。
QPalette::Button1通用按钮背景颜色。此背景可以与 Window 不同,因为某些样式要求按钮具有不同的背景颜色。
QPalette::ButtonText8Button 颜色一起使用的前景颜色。
QPalette::BrightText7一种与WindowText非常不同的文本颜色,并且与例如Dark等颜色对比度很好。通常用于需要绘制文本的位置,其中使用TextWindowText提供的对比度较差的地方,如按下按钮。请注意,文本颜色不仅可以用于文字;通常用于文本,但使用文本颜色角色用于线条、图标等也是非常常见的。

有一些颜色角色主要用于3D斜边和阴影效果。所有这些都是从Window衍生出来的,并且在使用方式上依赖于这种关系。例如,按钮依赖它使斜边看起来更有吸引力,Motif滚动条则依赖Mid使其与Window略有不同。

常数描述
QPalette::Light2Button颜色浅。
QPalette::Midlight3位于ButtonLight之间。
QPalette::Dark4Button颜色深。
QPalette::Mid5位于ButtonDark之间。
QPalette::Shadow11一个非常暗的颜色。默认情况下,阴影颜色是Qt::black

选中的(标记的)项有两个角色

常数描述
QPalette::Highlight12表示选中项或当前项的颜色。默认情况下,高亮颜色是Qt::darkBlue
QPalette::Accent (since Qt 6.6)21通常与基础、窗口和按钮颜色对比或补充的颜色。这通常代表用户对桌面个性化的选择。交互式组件的样式是典型用例。除非明确设置,它默认为高亮。
QPalette::HighlightedText13Highlight颜色对比的文本颜色。默认情况下,高亮文本颜色是Qt::white

有两个与超链接相关的颜色角色

常数描述
QPalette::Link14用于未访问过的超链接的文本颜色。默认情况下,链接颜色是Qt::blue
QPalette::LinkVisited15用于已访问过的超链接的文本颜色。默认情况下,已访问链接颜色是Qt::magenta

请注意,我们在Qt中渲染富文本时,不使用LinkLinkVisited角色,而且我们推荐您使用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::NoRole17没有角色;此特殊角色通常用于表示未分配角色。

成员函数文档

QPalette::QPalette()

构建一个没有设置颜色角色的空调色板对象。

当用作QWidget的调色板时,颜色会根据QWidget::setPalette中描述的方式解决。QWidget

另请参阅QApplication::setPalette()和QApplication::palette

QPalette::QPalette(const QColor &button)

button颜色构建调色板。其他颜色将根据此颜色自动计算。Window也将是按钮颜色。

QPalette::QPalette(Qt::GlobalColor button)

button颜色构建调色板。其他颜色将根据此颜色自动计算。Window也将是按钮颜色。

QPalette::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)

构建调色板。您可以为 windowTextbuttonlightdarkmidtextbright_textbasewindow 传入画笔、位图或纯色。

参见QBrush

QPalette::QPalette(const QPalette &p)

构建 p 的副本。

此构造函数非常快,归功于 隐式共享

[noexcept] QPalette::QPalette(QPalette &&other)

移动构造 QPalette 实例,使其指向 other 所指向的同一样本。

在被移动后,您只能对 other 赋值或销毁。任何其他操作都将导致未定义行为。

[noexcept] QPalette::~QPalette()

销毁调色板。

[since 6.6] const QBrush &QPalette::accent() const

返回当前颜色组的突出显示画笔。

此函数是在 Qt 6.6 中引入的。

参见ColorRolebrush

const QBrush &QPalette:: alternateBase() const

返回当前颜色组的备选基础画笔。

参见ColorRolebrush

const QBrush &QPalette::base() const

返回当前颜色组的基础画笔。

参见ColorRolebrush

const QBrush &QPalette::brightText() const

返回当前颜色组的亮文本前景画笔。

参见ColorRolebrush

const QBrush &QPalette::brush(QPalette::ColorGroup group, QPalette::ColorRole role) const

返回指定颜色组 group 用于给定颜色 role 的画笔。

参见colorsetBrushColorRole

const QBrush &QPalette::brush(QPalette::ColorRole role) const

这是一个重载函数。

返回当前 ColorGroup 中为指定颜色 role 设置的画笔。

参见colorsetBrushColorRole

const QBrush &QPalette::button() const

返回当前颜色组的按钮画笔。

参见ColorRolebrush

const QBrush &QPalette::buttonText() const

返回当前颜色组的按钮文字前景画笔。

参见ColorRolebrush

qint64 QPalette::cacheKey() const

返回一个数字,用于标识此 QPalette 对象的内容。不同的 QPalette 对象可以具有相同的密钥,如果它们引用相同的内容。

当调色板被更改时,cacheKey() 将会改变。

const QColor &QPalette::color(QPalette::ColorGroup group, QPalette::ColorRole role) const

返回指定颜色 group 中用于指定颜色 role 的颜色。

另请参阅brush(),setColor() 和 ColorRole

const QColor &QPalette::color(QPalette::ColorRole role) const

这是一个重载函数。

返回当前 ColorGroup 中为指定颜色 role 设置的颜色。

另请参阅brush() 和 ColorRole

QPalette::ColorGroup QPalette::currentColorGroup() const

返回调色板的当前颜色组。

另请参阅setCurrentColorGroup

const QBrush &QPalette::dark() const

返回当前颜色组的暗色画笔。

参见ColorRolebrush

const QBrush &QPalette::highlight() const

返回当前颜色组的突出显示画笔。

参见ColorRolebrush

const QBrush &QPalette::highlightedText() const

返回当前颜色组的突出显示文本画笔。

参见ColorRolebrush

bool QPalette::isBrushSet(QPalette::ColorGroup cg, QPalette::ColorRole cr) const

如果此调色板上的 ColorGroup 和 ColorRole cr 已设置,则返回 true;否则返回 false

颜色组cg应该小于QPalette::NColorGroups,但可以使用QPalette::Current。在这种情况下,将使用先前设置的颜色组。

颜色角色cr应该小于QPalette::NColorRoles

另请参阅 setBrush() 和 currentColorGroup

bool QPalette::isCopyOf(const QPalette &p) const

如果此图面和p互为副本,则返回true,即其中一个是另一个的副本,并且两者随后都没有被修改;否则返回false。这比相等性要严格得多。

另请参阅 operator=() 和 operator==

bool QPalette::isEqual(QPalette::ColorGroup cg1, QPalette::ColorGroup cg2) const

如果颜色组cg1等于cg2,则返回true(通常是快速的);否则返回false

const QBrush &QPalette::light() const

返回当前颜色组的亮色画刷。

参见ColorRolebrush

返回当前颜色组的未访问链接文本画刷。

参见ColorRolebrush

const QBrush &QPalette::linkVisited() const

返回当前颜色组的已访问链接文本画刷。

参见ColorRolebrush

const QBrush &QPalette::mid() const

返回当前颜色组的中间色画刷。

参见ColorRolebrush

const QBrush &QPalette::midlight() const

返回当前颜色组的半亮色画刷。

参见ColorRolebrush

const QBrush &QPalette::placeholderText() const

返回当前颜色组的占位符文本画刷。

注意:在 Qt 5.12 之前,占位符文本颜色被硬编码为使用QPalette::text().color(),并应用了 128 的 alpha 值。在 Qt 6 中,它是一个独立颜色。

参见ColorRolebrush

QPalette QPalette::resolve(const QPalette &other) const

返回一个新的QPalette,它是此实例和other的并集。在此实例中设置的颜色角色具有优先权。未在此实例中设置的角色的颜色将从other中获取。

另请参阅 isBrushSet

void QPalette::setBrush(QPalette::ColorRole role, const QBrush &brush)

将所有组中给定颜色role的画刷设置为指定的brush

另请参阅brush(),setColor() 和 ColorRole

void QPalette::setBrush(QPalette::ColorGroup group, QPalette::ColorRole role, const QBrush &brush)

这是一个重载函数。

将指定颜色组中用于指定颜色角色的画笔设置为指定的画笔。

另请参阅brush(),setColor() 和 ColorRole

void QPalette::setColor(QPalette::ColorGroup group, QPalette::ColorRole role, const QColor &color)

将指定颜色组中用于指定颜色角色的颜色设置为指定的纯色。

另请参阅setBrush(),color()和ColorRole

void QPalette::setColor(QPalette::ColorRole role, const QColor &color)

这是一个重载函数。

将给定颜色角色的颜色设置为所有颜色组中的指定纯色。

另请参阅brush(),setColor() 和 ColorRole

void QPalette::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。您可以传递画笔、位图或纯色作为windowTextbuttonlightdarkmidtextbright_textbasewindow

参见QBrush

void QPalette::setCurrentColorGroup(QPalette::ColorGroup cg)

将调色板当前颜色组设置为cg

另请参阅currentTimeGroup()。

const QBrush &QPalette::shadow() const

返回当前颜色组的阴影画笔。

参见ColorRolebrush

[noexcept] void QPalette::swap(QPalette &other)

other交换此调色板实例。此函数非常快速,永远不会失败。

const QBrush &QPalette::text() const

返回当前颜色组的文本前景画笔。

参见ColorRolebrush

const QBrush &QPalette::toolTipBase() const

返回当前颜色组的工具提示基本画刷。此画刷由QToolTipQWhatsThis使用。

注意:工具提示使用QPalette的非活动颜色组,因为工具提示不是活动窗口。

参见ColorRolebrush

const QBrush &QPalette::toolTipText() const

返回当前颜色组的工具提示文本画刷。此画刷由QToolTipQWhatsThis使用。

注意:工具提示使用QPalette的非活动颜色组,因为工具提示不是活动窗口。

参见ColorRolebrush

const QBrush &QPalette::window() const

返回当前颜色组的窗口(一般背景)画刷。

参见ColorRolebrush

const QBrush &QPalette::windowText() const

返回当前颜色组的窗口文本(一般前景)画刷。

参见ColorRolebrush

QVariant QPalette::operator QVariant() const

将调色板作为QVariant返回。

bool QPalette::operator!=(const QPalette &p) const

如果此调色板与p不同,则返回true(较慢);否则返回false(通常较快)。

注意:比较调色板时不考虑当前的颜色组

另请参阅:operator==()。

QPalette &QPalette::operator=(const QPalette &p)

p赋值给此调色板,并返回对此调色板的引用。

由于隐式共享,此操作速度快。

[noexcept] QPalette &QPalette::operator=(QPalette &&other)

移动赋值other到此QPalette实例。

[since 6.6] bool QPalette::operator==(const QPalette &p) const

如果此调色板与p相等,则返回true(通常较快);否则返回false(较慢)。

注意:比较调色板时不考虑以下内容

此函数是在 Qt 6.6 中引入的。

另请参阅:operator!=()。

相关非成员函数

QDataStream &operator<<(QDataStream &s, const QPalette &p)

将调色板p写入流s,并返回对流的引用。

另请参阅:QDataStream操作符的格式

QDataStream &operator>>(QDataStream &s, QPalette &p)

从流s中读取调色板到调色板p,并返回流的一个引用。

另请参阅:QDataStream操作符的格式

© 2024 Qt公司。此处包含的文档贡献版权属于各自的所有者。此处提供的文档根据自由软件基金会发布并在GNU自由文档许可证版本1.3下的条款进行许可。Qt及其相关标志是芬兰及全球其他国家的Qt公司的商标。所有其他商标均为其各自所有者的财产。