QPalette类

QT基础之QPalette类 介绍了如何使用QPalette改变控件的颜色外观 阅读详情

QPalette类包含每个控件状态的颜色组,专门用于管理控件的外观显示。


Header:#include <QPalette>
CMake:find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake:QT += gui

【详细描述】

每个窗体和控件都包含一个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.



【公共类型】

enumColorGroup { Disabled(禁用), Active(激活), Inactive(非活动), Normal(等价于激活) }
enumColorRole { Window, WindowText, Base, AlternateBase, ToolTipBase, …, NoRole }

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

核心角色是:

枚举名值描述
QPalette::Window10一般背景色。
QPalette::WindowText0一般前景色。
QPalette::Base9主要用作文本输入控件的背景色,但也可用于其他绘画,例如组合框下拉列表和工具栏手柄的背景。它通常是白色或其他浅色。
QPalette::AlternateBase16在具有交替行颜色的视图中用作备用背景色(请参见QAbstractItemView::setAlternatingRowColors())。
QPalette::ToolTipBase18用作 QToolTip and QWhatsThis的背景色。工具提示使用 的“非活动”颜色组,因为工具提示不是活动窗口。
QPalette::ToolTipText19用作 QToolTip and QWhatsThis的前景色。工具提示使用 的“非活动”颜色组,因为工具提示不是活动窗口。
QPalette::PlaceholderText20用作各种文本输入控件的占位符颜色。这个枚举值已经在Qt 5.12中引入
QPalette::Text6与Base一起使用的前景色。这通常与WindowText相同,在这种情况下,它必须提供与Window和Base的良好对比度。
QPalette::Button1常规按钮背景颜色。此背景可能不同,因为某些Window样式要求按钮使用不同的背景颜色。
QPalette::ButtonText8与Botton颜色一起使用的前景色。
QPalette::BrightText7

一种与WindowText非常不同的文本颜色,与Dark(黑暗)有很好的对比。通常用于需要绘制的文本,其中文本或窗口文本会比较差,如按下按钮。注意,文本颜色可以用于单词以外的其他用途;文本颜色通常用于文本,但将文本颜色角色用于线条、图标等是很常见的。

有一些颜色角色主要用于 3D 斜角和阴影效果。所有这些通常都派生自Window,并且以依赖于该关系的方式使用,按钮依赖于它来使斜面看起来更有吸引力。

枚举名值描述
QPalette::Light2比Button颜色浅。
QPalette::Midlight3在 Button和Light 之间。
QPalette::Dark4比 Button更暗。
QPalette::Mid5在 Button和 Dark之间。
QPalette::Shadow11一种非常深的颜色。默认情况下,阴影颜色为Qt::black 。

选定(标记)项目有两个角色:

枚举名值描述
QPalette::Highlight12用于指示选定项或当前项的颜色。默认情况下,突出显示颜色为Qt::darkBlue。
QPalette::Accent21通常与“基本”Base、“窗口”Window和“按钮”Button颜色形成对比或互补的颜色。它通常代表用户对桌面个性化的选择。交互式组件的样式是一个典型的用例。除非显式设置,否则默认为“突出显示”。
QPalette::HighlightedText13与Highlight形成对比的文本颜色。默认情况下,突出显示的文本颜色为 。

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

枚举名值描述
QPalette::Link14用于未访问超链接的文本颜色。默认link颜色为Qt::blue。
QPalette::LinkVisited15用于已访问超链接的文本颜色。默认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::NoRole17没有角色。此特殊角色通常用于指示尚未分配角色。

【公有函数】

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
返回当前颜色组的按钮文本前景画笔。
qint64cacheKey() 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::ColorGroupcurrentColorGroup() const
返回当前QPalette。
const QBrush &dark() const
返回当前颜色组的dark笔刷。
const QBrush &highlight() const
返回当前颜色组的 highlight 笔刷。
const QBrush &highlightedText() const
返回当前颜色组的 highlighted text 笔刷。
boolisBrushSet(QPalette::ColorGroup cg, QPalette::ColorRole cr) const

如果先前已在此调色板上设置了颜色组cg和颜色角色cr,则返回true,否则返回false。

颜色组cg应属于QPalette::NColorGroups,也可以使用QPalette::Current,这种情况下,会使用先前设置的当前颜色组。

ColorRole cr 应属于QPalette::NColorRoles。

boolisCopyOf(const QPalette &p) const
如果当前QPalette和p是作为彼此的副本创建,并且之后都没有被修改,则返回true,否则返回false。此函数比“==”严格得多。
boolisEqual(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
返回当前颜色组的占位符文本画笔。
QPaletteresolve(const QPalette &other) const
返回一个新的QPalette,它是this实例和other实例的并集。以this实例中设置的颜色角色优先。
voidsetBrush(QPalette::ColorRole role, const QBrush &brush)
将给定角色role的画笔设置为调色板中所有组的brush。
voidsetBrush(QPalette::ColorGroup group, QPalette::ColorRole role, const QBrush &brush)
将给定角色role的画笔设置为调色板中group组的brush。
voidsetColor(QPalette::ColorGroup group, QPalette::ColorRole role, const QColor &color)
为指定的color设置group颜色组中的role角色。
voidsetColor(QPalette::ColorRole role, const QColor &color)
为指定的color设置所有颜色组中的role角色。
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)
将组设置为cg,您可以为windowText、button、light、dark、mid、Text、bright_text、base和window传递画笔、位图或平面颜色。
voidsetCurrentColorGroup(QPalette::ColorGroup cg)
将调色板的当前颜色组设置为cg。
const QBrush &shadow() const
返回当前颜色组的shadow画笔。
voidswap(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(全局前景)画笔。
QVariantoperator QVariant() const
以QVariant形式返回调色板。
booloperator!=(const QPalette &p) const
QPalette &operator=(const QPalette &p)
QPalette &operator=(QPalette &&other)
booloperator==(const QPalette &p) const

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

<<< 返回根页面

QPalette的详细使用示例 1. 功能简介: QPalette是Qt中的调色板类,它提供的setColor()函数可改变控件的颜色,其原型为: void QPalette::setColor(ColorRole acr, const QColor &acolor) 其中, ColorRole是个枚举,指的是颜色主题,QPalette::Window是指背景色,QPalette::WindowText指的是前景色, QPalette::Button指的是按钮的底色... 2. 实例 新建一个Qt Widgets Ap 阅读详情

相关推荐

调色板QPalette用法

palette()获取部件(对象)的调色板,调用setColor()函数获取的调色板进行属性设置和填充的颜色,调用setPalette()传入设置好的调色板参数进行颜色设置,调用update()颜色设置后进行刷新

IDO_Hero的博客 1623

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

QPalette class QPalette类包含每个小部件状态的颜色组。 Header #include < QPalette > qmake QT += gui Inherits Inherited By Since 详细说明 调色板由三个颜色组组成:活动,禁用和不活动。 Qt中的所有小部件都包含一个调色板,并使用其调色板进行绘制。这使用户界面易于配置并且更易于保持一致。 如果创建新的小部件,我们强烈建议您使用调色板中的颜色,而不是硬编码特定颜色。

读书笔记 776

QPalette类使用总结

在实际的应用中,经常需要对某个控件的颜色外观,如背景、前景色等,进行设置。Qt 中提供的调色板 QPalette 类就是专门用于管理控件的外观显示。QPalette 类相当于对话框或控件的调色板,管理着控件和窗体的所有颜色。每个窗体和控件都包含一个 QPalette 对象,在显示时,对其做相应的设置即可。QPalette 有两个基本的概念:一个是ColorGroup;一个是ColorRole。

qq_37464701的博客 518

QPalette(调色板)类的用法

Qt-QPalette类的用法 QPalette是Qt中的一个调色板类,用于美化界面。 1.构造函数 QPalette(const QColor & button) QPalette(Qt::GlobalColor button) QPalette(const QColor & button, const QColor & window) QPalette(c...

周杰伦 1783

Qt-QPalette类的用法

介绍了Qt中QPalette类(调色板)能用到的内容。

u011477670的专栏 6546

十三、QPalette的简单使用(Qt5 GUI系列)

QPalette的简单使用

树欲静静风不止止的博客 1782

QPalette类详细使用方法

QPalette( [ˈpælət] 调色板)类相当于对话框或控件的调色板,它管理着控件或窗体的所有颜色信息,每个窗体或控件都包含一个QPalette对象,在显示时按照它的QPalette对象中对各部分各状态下的颜色的描述来进行绘制。QPalette类有两个基本的概念,一个是ColorGroup,另一个是ColorRole。void QPalette::setColor ( ColorRole r...

Lawrence_121 2万+

将Matlab程序打包成.exe独立可执行程序

将Matlab程序打包成.exe独立可执行程序,在未安装Matlab的电脑上也能运行Matlab程序。

简简单单的学习笔记,致力于帮助更多前进路上的朋友~ 5万+

QPalette类的使用

QPalette类相当于对话框或是控件的调色板,它管理着控件或窗体的所有颜色信息,每个窗体或控件都色含一个QPalette对象,在显示时按照它的QPalette对象中对各部分各状态下的颜色的描述来进行绘制。 QPalette类有两个基本的概念,一个是ColorGroup,另一个是ColorRole。   其中,ColorGroup指的是3种不同的状态,包括以下几种。 QPalett

xiarong715的专栏 1099

支付宝H5支付唤醒协议全解析:从alipays://到动态orderSuffix的抓取与拼接

本文深入解析支付宝H5支付唤醒协议,从alipays://协议设计到动态orderSuffix参数的抓取与拼接,详细介绍了支付宝H5支付的底层机制。内容包括协议架构剖析、动态令牌生成与捕获、浏览器兼容性解决方案以及安全机制设计,为开发者提供全面的技术指南和实践建议。

weixin_27972919的博客 3498

【汽车ECU标定技术解析】DCM文件与A2L、HEX的协同工作机制

本文深入解析了汽车ECU标定中DCM、A2L与HEX三大核心文件的协同工作机制。A2L文件作为定义标定变量地址与规则的“图纸”,DCM文件承载工程师调试后的具体标定数据,最终通过A2L的地址映射,将DCM数据固化生成可刷入ECU的HEX文件,形成完整的标定数据流转闭环。

weixin_29214559的博客 437

Qt之调色板类QPalette的使用

本文主要是讲解Qt的调色板类QPalette的使用,以及一些小知识点的运用

Jacksqh的博客 1612

计算机组成原理课程设计_微程序控制的简单模型机设计

微程序控制的简单模型机设计 要求 基本要求 完成一个简单主机的设计,模型机应具备如下能力:在自行设计的指令集基础上,运行自行编写的简单用户程序,实现特定运算功能。 弹性要求 在此基础上,完成必要的扩展,实现模型机的功能扩展设计,包括:实现多种运算功能(指令集的扩充)、支持更为丰富的寻址方式、有更为完善的微程序设计等。 实验软件和硬件环境 QuartusII, FPGA计算机组...

sailist的记录站 3万+

QPalette类的使用和说明

QPalette使用详解

danshiming的博客 2752

菜鸟哥玩蓝牙Ble4.0系列 ESP32初玩篇③ Beacon —— 广播应用,室内定位,内容推送

文章目录1、前言1.1 什么叫做Beacon?1.2 Beacon使用场景1.3 Beacon协议落地实现2、ESP32 Beacon案例3、Beacon核心库 —— BLEBeacon、BLEEddystoneTLM、BLEEddystoneURL3.1 BLEBeacon3.2 BLEEddystoneTLM3.3 BLEEddystoneURL 授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力。希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石。。。

单片机菜鸟哥的博客 2万+

Unity零基础到进阶 ☀️| Unity中的 GC及优化 超级全面解析 ☆(ゝω・)v 建议收藏!

介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据在不需要的时候,存储当前数据的内存就可以被回收以再次使用。内存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使用的过程。 Unity中将垃圾回收当作内存管理的一部分,如果游戏中废弃数据占用内存较大,则游戏的性能会受到极大影响,此时垃圾回收会成为游戏性能的一大障碍点。 本文我们主要学习垃圾回收的机制,垃圾回收如何被触发以及如何提GC收效率来提高游戏的性能。 Unity内存管理机制简介 要想了解垃圾回收如何工作以及何时被

努力前行,总会成为自己心中的那道光 6万+

Qt控件颜色面板类Qpalette

QPalette类提供了绘制QWidget控件时使用的颜色。 控件的颜色状态分三种: (1)Active,激活状态 (2)Disabled,禁用状态 (3)Inactive,未激活状态 控件在这三种不同的状态下具有不同的颜色值,QPalette类管理这三组颜色,它根据这三种状态分为三组颜色,每一组颜色都根据绘图角色的不同分类。系统在绘制控件时使用这些颜色,程序员可以改变这些设置。

m沉默 1142

Python从0到100完整学习指南(必看导航)

想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学业升学和工作就业的先行者!

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 6万+

Qt入门-控件颜色面板类QPalette

QPalette类提供了绘制QWidget控件时使用的颜色。     控件的颜色状态分三种: (1)Active,激活状态 (2)Disabled,禁用状态 (3)Inactive,未激活状态       控件在这三种不同的状态下具有不同的颜色值,QPalette类管理这三组颜色,它根据这三种状态分为三组颜色,每一组颜色都根据绘图角色的不同分类。系统在绘制控件时使用这些颜色,程序员可以

shuijingshizhe的博客 931

某东x-api-eid-token风控参数分析与破解

x-api-eid-token是京东的风控参数,在接口当中,如果没有该参数,有一定的概率能请求成功,但是在请求一段时间后,会报403权限失败的,该参数主要通过jsTk.do这个接口生成,并且会将其存储到cookie当中。

zhouzhou_98的博客 1552

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

QPalette~~控件颜色面板类QPalette

来源:Qt入门-控件颜色面板类QPalette     QPalette类提供了绘制QWidget控件时使用的颜色。     控件的颜色状态分三种: (1)Active,激活状态 (2)Disabled,禁用状态 (3)Inactive,未激活状态       控件在这三种不同的状态下具有不同的颜色值,QPalette类管理这三组颜色,它根据这

路楷的专栏 916

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

QT—QPalette调色板类

Qt提供的调色板类QPalette专门用于管理部件的外观显示,相当于部件或对话框的调色板,管理他们所有的颜色信息。每个部件都包含一个QPalette对象,在显示时,按照它的QPalette对象中对各部分各状态下的颜色的描述进行绘制。

qq_54169998的博客 2972

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

调色板类QPalette

调色板类的实例:设置相关部件的背景色与前景色。附代码及详细解释。背景色自动填充一定要加上这句话:setAutoFillBackground()

菜鸟打怪的博客 456

调色板类QPalette、QColor

2、调色板类QPalette、QColor QPalette pa; 设置控件字体颜色 pa.setColor(QPalette::WindowText,Qt::red); 设置控件背景颜色 pa.setColor(QPalette::Window,Qt::red); 最后选择对应控件设置 ui.label->setPalette(pa); 按钮颜色设置如下 设置背景setSty...

Baikal_Lake的博客 1843
上一篇: QPixmap【详细描述】
下一篇: QVariant类
floatbit
博客等级 码龄24年 460粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值