Qt编程18:Qt调色板QPalette的使用

QPalette类有两个枚举类型,

枚举

1、ColorGroup

CorGroup指的是3中不同的状态(什么时候设置颜色):

1>Active:获得焦点的状态。

2>Inactive:未获得焦点的状态。

3>Disable:不可用状态。

通常情况下,Active状态与Inactive状态下颜色显示是一致的,当然也可根据需要设置成不一样的颜色

2、ColorRole(设置什么颜色)。

ColorRole指的是颜色主题,即对窗体中不同部位颜色的分类,如QPalette::Window是指背景色,QPalette::WindowText指的是前景色等。

常用:

QPalete::Window, 通常指窗口部件的背景色;

QPalette:WindowText,通常指窗口不见的前景色(QLabel也可以使用);

QPalette::Base,指文本输入窗口部件(比如QTextEdit,QLinedit,QPlainTextEdit等)的背景色

QPalette::Text,与QPalette::Base一块使用,指文本输入窗口部件的前景色;

QPalette::Button,指按钮窗口部件的背景色;

QPalette::ButtonText,指按钮窗口部件的前景色

QPalette::Highlight:用于设置文字高亮时的背景颜色

QPalette::HighlightedText:用于设置文字高亮时的颜色

QPalette::Link:超链接文字颜色

QPalette::LinkVisted:超链接文字访问后的颜色

(目前使用的很少,但是可以直接拿来用)因为,带有默认色

QPalette::Light:比Button的亮

QPalette::Midlight:亮度在Light与Button之间

QPalette::Dark:

QPalette::Mid

QPalette::Shadow

例如:

    //设置可以自动填充背景色
    ui->label->setAutoFillBackground(true);
    //设置背景色为Palette::Shadow
    ui->label->setBackgroundRole(QPalette::Shadow);

    ui->label2->setAutoFillBackground(true);
    ui->label2->setBackgroundRole(QPalette::Light)

显示效果:

//----------------------------------------------------------------------------------------------------------------设置颜色的方法:

QPalette::setColor()针对某个ColoRole设置颜色

QPalette::setBrush()针对某个ColoRole设置颜色,可以设置图片

注意:在设置背景色的时候,首先调用setAutoFillBackGround(true)。

按钮使用调色板

//对按钮使用palette----------
    //设置按钮字体
    ui->toolBt->setFont(QFont("宋体",20,QFont::Bold));
    ui->toolBt->setAutoRaise(true);
    ui->toolBt->setAutoFillBackground(true);
    QPalette pl = ui->toolBt->palette();

    //设置按钮文字颜色
    pl.setColor(QPalette::ButtonText,QColor(Qt::red));
    //使用setBrush设置图片
    pl.setBrush(QPalette::Button,QBrush(QPixmap(":/new/resources/otherPage/tap_bg.png")));
    ui->toolBt->setPalette(pl);

效果:

QTextBrowser或QTextEdit使用调色板(文字编辑框)

    //设置部件文字属性
    ui->plainTextEdit->setFont(QFont("宋体",20,QFont::Bold));     //有效果
    ui->textBrowser->setFont(QFont("宋体",20,QFont::Bold));       //没有效果(QTextBrowser带有文字编辑功能)
    QFont font = ui->textBrowser->font();
    font.setCapitalization(QFont::AllUppercase);
    ui->textBrowser->setFont(font);                               //有效果

    //构造QPalette对象
    QPalette p2;
    //设置文本编辑框的背景色
    p2.setColor(QPalette::Base,QColor(Qt::gray));
    //设置文本编辑框文字的颜色
    p2.setColor(QPalette::Text,QColor(Qt::red));
    //设置文本编辑框高亮时的文字背景颜色(Active)
    p2.setColor(QPalette::Active,QPalette::Highlight,QColor(Qt::white));
    //设置文本编辑框高亮时文字的颜色(Active)
    p2.setColor(QPalette::Active,QPalette::HighlightedText,QColor(Qt::blue));

    //为保持文本状态一致(好看一些),在丢失焦点的时候设置颜色
    p2.setColor(QPalette::Inactive,QPalette::Highlight,QColor(Qt::gray));
    p2.setColor(QPalette::Inactive,QPalette::HighlightedText,QColor(Qt::red));

    //将焦点应用到控件
    ui->plainTextEdit->setPalette(p2);
    ui->textBrowser->setPalette(p2);

实现效果:

Qt编程18:Qt调色板QPalette的使用,布布扣,bubuko.com

时间: 2024-12-17 17:02:03

Qt编程18:Qt调色板QPalette的使用的相关文章

QT-面向对象的QT编程,QT设计师

一.面向对象的编程 <案例>通过一个按钮更新时间显示,显示格式为xx:xx:xx //主函数文件 #include<QApplication> #include"TimeDialog.h" int main(int argc,char** argv){ QApplication app(argc,argv); TimeDialog time; time.show(); return app.exec(); } //类声明文件 #ifndef __TIMEDIAL

Qt编程之实现在QFileDialog上添加自定义的widget

上网搜索找到的方法如下: http://www.qtforum.org/article/20841/how-to-add-a-qwidget-in-qfiledialog.html#post78422 http://www.qtcentre.org/threads/42858-Creating-a-Custom-FileOpen-Dialog http://stackoverflow.com/questions/16987916/add-widgets-to-qfiledialog 其实前两个链

在windows下的QT编程中的_TCHAR与QString之间的转换

由于在windows下的QT编程中,如果涉及到使用微软的API,那么不可避免使用_TCHAR这些类型,因此在网上查了一下,其中一个老外的论坛有人给出了这个转换,因此在这里做一下笔记 : )#ifdef UNICODE #define QStringToTCHAR(x)     (wchar_t*) x.utf16() #define PQStringToTCHAR(x)    (wchar_t*) x->utf16() #define TCHARToQString(x)     QString:

Qt编程获取鼠标移动事件

想做下面一个效果:想当鼠标移动到按钮上的时候,按钮就变大,图标换个大的,鼠标不在按钮上的时候,按钮就变小,图标也换成小的,感觉比较Cool 实现原理:为每个按钮设置监听属性 void MainHomeForm::init() { //为按钮注册事件 ui->SystemSetButton->installEventFilter(this); ui->ZoneSetButton->installEventFilter(this); } //系统监听器监听按钮对象 bool MainH

【Qt编程】自动补全功能

最近写了一个查单词的类似有道词典的软件,里面就有一个自动补全功能(即当你输入一个字母时,就会出现几个候选项).这个自动补全功能十分常见,百度搜索关键词时就会出现.不过它们这些补全功能都是与你输入的进行首字匹配,有时也会不方便.例如,如果我输入一个"好",如果是首字匹配的话会出现下图: 如果是句中匹配的话,则是这种情况: 你可以根据自己的要求进行选择哪一种模式. Qt中自带QCompleter类来实现上面的自动补全功能,读者可以在Qt自带的demo中很容易的学会该类的使用.下面我要讲的是

【Qt编程】调用讲述人

我们知道,win7系统自带有讲述人,即可以机器读出当前内容,具体可以将电脑锁定,然后点击左下角的按钮即可.之前在用Matlab写扫雷游戏的时候,也曾经调用过讲述人来进行游戏的语音提示.具体的Matlab脚本文件如下: sp=actxserver('SAPI.SpVoice');sp.Speak('你好,欢迎来到西安电子科技大学!Hello,Welcome to XD University!') Qt调用讲述人,需要使用专门的类,具体可以参考http://lynxline.com/qtspeech

Qt编程16:Qt向导简单使用(QWizard及QWizardPage)

关于Qt向导的使用,在Qt4.8.1以及4Q5.2.1中存在一个简单的例子,实现方式与我的方式有所不同. 在原有的例子中,使用了三个方法,分别定义了三个向导页:然后在main函数中将三个向导页通过addPage的方法加入向导. 如此比较简单实现,但是我觉得不够灵活.最后是将三个向导页分别继承QWizardPage,因为会涉及到每个向导页的一些操作.在这里也是基础. mywizard.h #ifndef MYWIZARD_H #define MYWIZARD_H #include <QWizard

Qt编程的一些技巧

1.Qt程序在运行过程中,调用函数(如lcdNumber->display(num))显示数据到界面上时,并不会马上刷新屏幕显示,而是要等主程序运行到函数a.exec()时,才刷新屏幕,如下 因此想在循环中刷新界面显示数据,需要在显示函数之后加上函数 qApp->processEvents(); 就可以实现刷新屏幕. 2.Qt中隐藏鼠标指针和免去终端中运行程序时需要输参数-qws 在main函数中 QApplication a(argc, argv,QApplication::GuiServe

QT笔记(1)--QT编程环境搭建

一.QT简介 Qt  是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程.2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具.2012年,Qt被Digia收购.2014年4月,跨平台集成开发环境Qt Creator 3.1.