1. 功能简介:

QPalette是Qt中的调色板类,它提供的setColor()函数可改变控件的颜色,其原型为:

void QPalette::setColor(ColorRole acr, const QColor &acolor)

其中, ColorRole是个枚举,指的是颜色主题,QPalette::Window是指背景色,QPalette::WindowText指的是前景色, QPalette::Button指的是按钮的底色...

2. 实例

新建一个Qt Widgets Application工程, 基类为QDialog或QMainWindow,取消"创建界面"复选框

2.1 mainwindow.h 代码如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QLabel>
#include <QComboBox>
#include <QTextEdit>
#include <QPushButton>
#include <QLineEdit>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();void createCtrlFrame();void createContentFrame();void fillColorList(QComboBox*);private slots:void ShowWindow();void ShowWindowText();void ShowButton();void ShowButtonText();void ShowBase();private:QFrame*     ctrlFrame;QLabel*     windowLabel;QComboBox*  windowComboBox;QLabel*     windowTextLabel;QComboBox*  windowTextComboBox;QLabel*     buttonLabel;QComboBox*  buttonComboBox;QLabel*     buttonTextLabel;QComboBox*  buttonTextComboBox;QLabel*     baseLabel;QComboBox*  baseComboBox;QFrame*     contentFrame;QLabel*     label1;QComboBox*  comboBox1;QLabel*     label2;QLineEdit*  lineEdit2;QTextEdit*  textEdit;QPushButton* OkBtn;QPushButton* CancelBtn;
};
#endif // MAINWINDOW_H

2.2 mainwindow.cpp 代码如下:

#include "mainwindow.h"
#include <QHBoxLayout>
#include <QGridLayout>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{createCtrlFrame();createContentFrame();QWidget* mainWidget = new QWidget(this);this->setCentralWidget(mainWidget);QHBoxLayout* mainLayout = new QHBoxLayout(mainWidget);mainLayout->addWidget(ctrlFrame);mainLayout->addWidget(contentFrame);
}MainWindow::~MainWindow()
{
}void MainWindow::createCtrlFrame()
{ctrlFrame = new QFrame;windowLabel = new QLabel(tr("QPalette::Window: "));windowComboBox = new QComboBox;fillColorList(windowComboBox);connect(windowComboBox, SIGNAL(activated(int)), this, SLOT(ShowWindow()));windowTextLabel = new QLabel(tr("QPalette::WindowText: "));windowTextComboBox = new QComboBox;fillColorList(windowTextComboBox);connect(windowTextComboBox, SIGNAL(activated(int)), this, SLOT(ShowWindowText()));buttonLabel = new QLabel(tr("QPalette::Button: "));buttonComboBox = new QComboBox;fillColorList(buttonComboBox);connect(buttonComboBox, SIGNAL(activated(int)), this, SLOT(ShowButton()));buttonTextLabel = new QLabel(tr("QPalette::ButtonText: "));buttonTextComboBox = new QComboBox;fillColorList(buttonTextComboBox);connect(buttonTextComboBox, SIGNAL(activated(int)), this, SLOT(ShowButtonText()));baseLabel = new QLabel(tr("QPalette::Base: "));baseComboBox = new QComboBox;fillColorList(baseComboBox);connect(baseComboBox, SIGNAL(activated(int)), this, SLOT(ShowBase()));QGridLayout* mainLayout = new QGridLayout(ctrlFrame);mainLayout->setSpacing(20);mainLayout->addWidget(windowLabel, 0, 0);mainLayout->addWidget(windowComboBox, 0, 1);mainLayout->addWidget(windowTextLabel, 1, 0);mainLayout->addWidget(windowTextComboBox, 1, 1);mainLayout->addWidget(buttonLabel, 2, 0);mainLayout->addWidget(buttonComboBox, 2, 1);mainLayout->addWidget(buttonTextLabel, 3, 0);mainLayout->addWidget(buttonTextComboBox, 3, 1);mainLayout->addWidget(baseLabel, 4, 0);mainLayout->addWidget(baseComboBox, 4, 1);
}void MainWindow::createContentFrame()
{contentFrame = new QFrame;label1 = new QLabel(tr("请选择一个值: "));comboBox1 = new QComboBox;label2 = new QLabel(tr("请输入字符串: "));lineEdit2 = new QLineEdit;textEdit = new QTextEdit;QGridLayout* TopLayout = new QGridLayout;TopLayout->addWidget(label1, 0, 0);TopLayout->addWidget(comboBox1, 0, 1);TopLayout->addWidget(label2, 1, 0);TopLayout->addWidget(lineEdit2, 1, 1);TopLayout->addWidget(textEdit, 2, 0, 1, 2);OkBtn = new QPushButton(tr("确认"));CancelBtn = new QPushButton(tr("取消"));QHBoxLayout *BottomLayout = new QHBoxLayout;BottomLayout->addWidget(OkBtn);BottomLayout->addWidget(CancelBtn);QVBoxLayout* mainLayout = new QVBoxLayout(contentFrame);mainLayout->addLayout(TopLayout);mainLayout->addLayout(BottomLayout);
}void MainWindow::fillColorList(QComboBox *comboBox)
{//获取Qt所有知道名称的颜色名列表QStringList colorList = QColor::colorNames();QString color;foreach(color, colorList){//QPixmap对象作为显示颜色的图标QPixmap pix(QSize(70, 20));pix.fill(QColor(color));comboBox->addItem(QIcon(pix), NULL);comboBox->setIconSize(QSize(70, 20));//设置下拉框的尺寸调整策略为符合内容的大小comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);}
}void MainWindow::ShowWindow()
{QStringList colorList = QColor::colorNames();QColor color = QColor(colorList[windowComboBox->currentIndex()]);QPalette pal = contentFrame->palette();pal.setColor(QPalette::Window, color);contentFrame->setPalette(pal);contentFrame->update();
}void MainWindow::ShowWindowText()
{QStringList colorList = QColor::colorNames();QColor color = QColor(colorList[windowTextComboBox->currentIndex()]);QPalette pal = contentFrame->palette();pal.setColor(QPalette::WindowText, color);contentFrame->setPalette(pal);
}void MainWindow::ShowButton()
{QStringList colorList = QColor::colorNames();QColor color = QColor(colorList[buttonComboBox->currentIndex()]);QPalette pal = contentFrame->palette();pal.setColor(QPalette::Button, color);contentFrame->setPalette(pal);contentFrame->update();
}void MainWindow::ShowButtonText()
{QStringList colorList = QColor::colorNames();QColor color = QColor(colorList[buttonTextComboBox->currentIndex()]);QPalette pal = contentFrame->palette();pal.setColor(QPalette::ButtonText, color);contentFrame->setPalette(pal);
}void MainWindow::ShowBase()
{QStringList colorList = QColor::colorNames();QColor color = QColor(colorList[baseComboBox->currentIndex()]);QPalette pal = contentFrame->palette();pal.setColor(QPalette::Base, color);contentFrame->setPalette(pal);
}

2.3 运行界面如下:

注:本文参考了<Qt5 开发及实例(第三版)> (主编:陆文周)

QPalette的详细使用示例相关推荐

  1. xml相关php函数,PHP利用xml常用函数的详细集合示例

    这篇文章主要为大家详细介绍了PHP利用xml常用函数的详细集合示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧! 1.DOM 函数 a.DOMDocu ...

  2. msp430流水灯c语言程序,超详细msp430示例程序汇编.doc

    超详细msp430示例程序汇编 一.基础_实验[10个] 1.入门试验:LED闪烁(1个) 2.时钟实验:设置MCLK.ACLK.SMCLK(1个) 3.低功耗实验:设置低功耗模式(1个) 4.IO端 ...

  3. HttpClient详细使用示例

    HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 java net包中已经提供了访 ...

  4. Java时间类型转换详细代码示例

    Java时间类型转换详细代码示例 一.时间类型转换代码示例 二.时间标准简介 1.UTC(世界标准时间) 2.GMT(格林尼治平时) 3.CST(北京时间) 三.SimpleDateFormat 参数 ...

  5. 数据采集工具之Flume的常用采集方式详细使用示例

    数据采集工具之Flume的常用采集方式详细使用示例 Flume Flume概述 Flume架构 核心的组件 常用Channel.Sink.Source类型 Flume架构模式 安装Flume Flum ...

  6. vue3 - 网页大转盘抽奖功能,支持后端接口确定最终奖品,可自定义轮盘宽高、颜色、字号、按钮等等(超详细的示例代码及注释开箱即用,稍微改改就能应用到你的项目中)

    效果图 网上的 vue3 教程非常少,找了几篇代码太乱根本无法改造和使用.. 如下图所示,你可以自己 DIY 转盘的大小位置及样式,中奖的商品由后端接口控制, 代码干净只有核心的功能,注释超级详细新手 ...

  7. vue - element <upload> 组件批量上传文档,可携带其他表单数据项一同与文件 “手动提交“ 服务器(类似百度文库系统批量上传前端界面与逻辑)超详细教程示例源码,提供界面与逻辑完整源码

    效果图 本示例使用的是 element 组件库,其实什么组件库都行(逻辑是一样),只要你是 vue.js 项目就能使用本教程. 本文实现了 vue + element 使用 upload 组件批量上传 ...

  8. uni-app - 最详细 H5 网页接入微信登录功能,提供公众号配置与详细注释示例代码(移动端网页实现点击登录按钮后 调用微信公众号授权登录功能 详细讲解接入流程与详细示例代码)官方最新超级详细教程

    前言 关于 uni-app 项目中接入微信授权登录的文章鱼龙混杂,各种乱代码.过时.没注释.不讲流程原理,非常难用. 本文实现了 uni-app H5 移动端网页项目,实现微信授权登录功能,详细讲解接 ...

  9. uniapp - 超详细实现播放 svg / svga 格式动画组件插件,用于直播间赠送礼物特效动画或项目动画特效较多的应用(新手小白保姆级教程,提供插件+详细运行示例+使用文档+注意事项+格式说明)

    前言 网上关于 uniapp 播放 svg / svga 格式动画的教程很乱,基本上全是 BUG 和各种不兼容,很难复制过来自己用. 本文实现了 在 uniapp 项目中(完美兼容 H5 / App ...

最新文章

  1. Linux Socket编程(不限Linux)
  2. 模拟和存根有什么区别?
  3. 全球及中国黑胡椒粉行业竞争规划与未来发展趋势预测报告2022-2028年版
  4. 配置toad远程连接oracle
  5. mybaits自连接查询
  6. 国家部委对4G调研:未定给中电信联通发放牌照
  7. mysql存储过程触发器_【MySQL笔记】触发器,存储过程和函数
  8. 求分数序列和(信息学奥赛一本通-T1078)
  9. 博文目录(最新更新:2018.6.6)
  10. DOCX是什么格式文件
  11. 《Java程序员,上班那点事儿》征文活动获奖名单
  12. Android系统如何录制屏幕(录制成mp4格式)
  13. (亲测有效).net framework 在计算机上已安装了更高的 4.x 版本,则无法安装以前的 4.5 版本。
  14. GAMIT处理GLONASS数据
  15. 计算机未连接到网络,电脑无法连接到网络的处理办法
  16. 40款用于简洁网页设计的光滑英文字体【上】
  17. 超详细!!vue、vue-cli脚手架项目使用prerender-spa-plugin,解决SEO并为其添加title,keyWords,descript
  18. python写文件自动换行_python怎么换行继续写脚本
  19. L1 批判思维 - 独立思考- 破除思维误区 1.1为什么我们很难独立思考
  20. 什么lol云顶之奕小助手小蜜蜂肝不完了?让万能的python来帮你

热门文章

  1. 使用TeeChart Pro ActiveX轻松捕获放射性核素数据!
  2. 安装grafana踩的坑
  3. Photoshop如何将照片打造成 素描 效果
  4. mybatis-plus使用generator代码生成器生成实体类支持Swagger2
  5. 875计算机大纲,上海大学875多媒体技术2018研究生入学考试大纲
  6. YA-C21A型二氧化碳传感器
  7. CCircle圆类求圆环面积
  8. 成为会带团队的技术人 知人善用:借事修人,借人成事
  9. 一些好用的Azure存储管理工具
  10. html div box,CSS box-sizing属性的正确用法