外观和样式(08):【类】QPalette[官翻]

QPalette类是Qt中用于管理小部件颜色的关键组件,包含活动、禁用和不活动三种状态的颜色组。每个颜色组有多个颜色角色,如前景色、背景色、高亮等,用于绘制小部件。建议遵循Qt的默认调色板并按需修改,以保持一致性。颜色角色包括WindowText、Button、Highlight等,可用于定制用户界面的视觉效果。
摘要由CSDN通过智能技术生成

QPalette class

QPalette类包含每个小部件状态的颜色组。

Header#include < QPalette >
qmakeQT += gui
Inherits
Inherited By
Since

详细说明

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

如果创建新的小部件,我们强烈建议您使用调色板中的颜色,而不是硬编码特定颜色。

颜色组:

  • Active 活动组用于具有键盘焦点的窗口。
  • Inactive 不活动组用于其他窗口。
  • Disabled 禁用组用于因某些原因禁用的窗口小部件(非Windows)。

活动窗口和非活动窗口都可以包含禁用的窗口小部件。 (禁用的小部件通常称为不可访问或显示为灰色。)

在大多数样式中,“活动”和“非活动”外观相同。

可以使用setColor() 和setBrush() 为调色板的任何颜色组中的特定角色设置颜色和画笔。颜色组包含小部件用来绘制自身的一组颜色。我们建议小部件使用调色板中的颜色组角色,例如“foreground”和“base”,而不要使用文字颜色,例如“红色”或“turquoise绿松石”。颜色角色在ColorRole文档中进行了枚举和定义。

强烈建议您使用当前样式的默认调色板(由QGuiApplication::palette() 返回),并根据需要进行修改。这是由Qt的小部件在绘制时完成的。

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

有对应的color() 和brush() ,以及用于获取当前ColorGroup的ColorRole的常用便利函数: window() ,windowText() ,base() 等。

可以使用复制构造函数复制一个调色板,并使用isCopyOf() 测试两个调色板是否相同

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

警告:例如,某些样式如果使用本机主题引擎,则不会在所有图形上使用调色板。 Windows Vista和macOS样式均是如此。

公共类型

enum ColorGroup

ConstantValueDescription
QPalette::Disabled1
QPalette::Active0
QPalette::Inactive2
QPalette::NormalActivesynonym for Active

enum ColorRole

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

Color Roles

ConstantValueDescription
QPalette::WindowText0一般前景色。
QPalette::Button1常规按钮的背景色。此背景可能与Window不同,因为某些样式需要按钮使用不同的背景颜色。
QPalette::Text6与Base一起使用的前景色。这通常与WindowText相同,在这种情况下,它必须与Window和Base提供良好的对比。
QPalette::BrightText7与WindowText截然不同的文字颜色,例如与黑暗。通常用于需要在Text或WindowText对比度差的地方绘制的文本,例如按下按钮时。请注意,文字颜色可以用于文字以外的其他内容;文本颜色通常用于文本,但是将文本颜色角色用于线条,图标等是很常见的。
QPalette::ButtonText8与Button颜色一起使用的前景色。
QPalette::Base9主要用作文本输入小部件的背景色,但也可以用于其他绘画-例如组合框下拉列表和工具栏手柄的背景。通常为白色或其他浅色。
QPalette::Window10一般背景颜色。
QPalette::AlternateBase16在具有交替行颜色的视图中用作交替背景色(请参见QAbstractItemView :: setAlternatingRowColors() )。
QPalette::ToolTipBase18用作QToolTip和QWhatsThis的背景色。工具提示使用QPalette的非活动颜色组,因为工具提示不是活动窗口。
QPalette::ToolTipText19用作QToolTip和QWhatsThis的前景色。工具提示使用QPalette的非活动颜色组,因为工具提示不是活动窗口。
QPalette::PlaceholderText20用作各种文本输入小部件的占位符颜色。这个枚举值已在Qt 5.12中引入
QPalette::BackgroundWindow此值已过时。改用Window。
QPalette::ForegroundWindowText此值已过时。改用WindowText。

有一些颜色角色主要用于3D斜角和阴影效果。 所有这些通常都从Window派生,并以依赖于该关系的方式使用。 例如,按钮依赖于它使斜角看起来很吸引人,而Motif滚动条依赖于Mid与Window稍有不同。

ConstantValueDescription
QPalette::Light2比按钮颜色浅。
QPalette::Midlight3在按钮和指示灯之间。
QPalette::Dark4比Button更暗。
QPalette::Mid5在Button和Dark之间。
QPalette::Shadow11非常深的颜色。 默认情况下,阴影颜色为Qt::black。

选定(标记)的项目具有两个作用:

ConstantValueDescription
QPalette::Highlight12一种颜色,指示选定的项目或当前的项目。 默认情况下,突出显示颜色为Qt :: darkBlue。
QPalette::HighlightedText13与突出显示形成对比的文本颜色。 默认情况下,突出显示的文本颜色为Qt :: white。

有两种与超链接有关的颜色角色:

ConstantValueDescription
QPalette::Link14用于未访问的超链接的文本颜色。 默认情况下,链接颜色为Qt :: blue。
QPalette::LinkVisited15用于已访问的超链接的文本颜色。 默认情况下,链接访问的颜色是Qt ::洋红色。

请注意,在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);
ConstantValueDescription
QPalette::NoRole17没有作用; 此特殊角色通常用于指示尚未分配角色。

公共函数

构造、析构和赋值

  1. QPalette(QPalette &&other)
  2. QPalette(const QPalette &p)
  3. 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)
  4. QPalette(const QColor &button, const QColor &window)
  5. QPalette(Qt::GlobalColor button)
  6. QPalette(const QColor &button)
  7. QPalette()
  8. QPalette & operator=(QPalette &&other)
  9. QPalette & operator=(const QPalette &p)
  10. ~QPalette()
  11. void swap(QPalette &other)
  12. QPalette resolve(const QPalette &other) const

颜色角色

颜色角色方便函数
QPalette::WindowText0const QBrush & windowText() const
QPalette::Button1const QBrush & button() const
QPalette::Light2const QBrush & light() const
QPalette::Midlight3const QBrush & midlight() const
QPalette::Dark4const QBrush & dark() const
QPalette::Mid5const QBrush & mid() const
QPalette::Text6const QBrush & text() const
QPalette::BrightText7const QBrush & brightText() const
QPalette::ButtonText8const QBrush & buttonText() const
QPalette::Base9const QBrush & base() const
QPalette::Window10const QBrush & window() const
QPalette::Shadow11const QBrush & shadow() const
QPalette::Highlight12const QBrush & highlight() const
QPalette::HighlightedText13const QBrush & highlightedText() const
QPalette::Link14const QBrush & link() const
QPalette::LinkVisited15const QBrush & linkVisited() const
QPalette::AlternateBase16const QBrush & alternateBase() const
QPalette::NoRole17
QPalette::ToolTipBase18const QBrush & toolTipBase() const
QPalette::ToolTipText19const QBrush & toolTipText() const
QPalette::PlaceholderText20const QBrush & placeholderText() const
QPalette::BackgroundWindow
QPalette::ForegroundWindowText

其它

  • const QBrush & brush(QPalette::ColorGroup group, QPalette::ColorRole role) const
    const QBrush & brush(QPalette::ColorRole role) const
    bool isBrushSet(QPalette::ColorGroup cg, QPalette::ColorRole cr) const
    void setBrush(QPalette::ColorRole role, const QBrush &brush)
    void setBrush(QPalette::ColorGroup group, QPalette::ColorRole role, const QBrush &brush)
  • const QColor & color(QPalette::ColorGroup group, QPalette::ColorRole role) const
    const QColor & color(QPalette::ColorRole role) const
    void setColor(QPalette::ColorGroup group, QPalette::ColorRole role, const QColor &color)
    void setColor(QPalette::ColorRole role, const QColor &color)
  • qint64 cacheKey() const
  • 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)
  • QPalette::ColorGroup currentColorGroup() const
    void setCurrentColorGroup(QPalette::ColorGroup cg)
  • bool isCopyOf(const QPalette &p) const
    bool isEqual(QPalette::ColorGroup cg1, QPalette::ColorGroup cg2) const
  • QVariant operator QVariant() const
    bool operator!=(const QPalette &p) const
    bool operator==(const QPalette &p) const

相关的函数

  1. QDataStream & operator<<(QDataStream &s, const QPalette &p)
  2. QDataStream & operator>>(QDataStream &s, QPalette &p)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值