Qt-QPalette-调色板学习
【摘要】
已经很久没有更新博客了,一是因为换了公司,完全是断网开发了,没有时间来写博客,最主要的就是温水煮青蛙,自己在舒适的环境中越来越懒了,最近打算强制自己更新一波。不知道能坚持多久。由于目前没有具体的Qt项目,智能更具书本内容来写博客。最为一种数据搬运和记录。本文内容来之Qt开发及实例第三版
...
已经很久没有更新博客了,一是因为换了公司,完全是断网开发了,没有时间来写博客,最主要的就是温水煮青蛙,自己在舒适的环境中越来越懒了,最近打算强制自己更新一波。不知道能坚持多久。由于目前没有具体的Qt项目,智能更具书本内容来写博客。最为一种数据搬运和记录。本文内容来之Qt开发及实例第三版
QPalette类主要有两个基本概念,一个是ColorGroup,另一个是ColorRole。其中ColorGroup指的是一下三种不同的状态
1. QPalette::Active: 获得焦点的状态
2. QPalette::Inactive: 未获得焦点的状态
3. QPalette::Disable:不可用状态
其中Active和Inactive状态在通常情况下,颜色显示是一致的。也可以根据需求设置为不一样的颜色。
1. QPalette::Active: 获得焦点的状态
2. QPalette::Inactive: 未获得焦点的状态
3. QPalette::Disable:不可用状态
其中Active和Inactive状态在通常情况下,颜色显示是一致的。也可以根据需求设置为不一样的颜色。
ColorRole指的是颜色的主题,即对窗体中不同部位颜色的分类。例如QPalette::Window是指背景色QPalette::WindowText指的是前景色,等等。
下面是运行代码截图
下面是源代码分享
palette.h
palette.h
-
#ifndef PALETTE_H
-
#define PALETTE_H
-
-
#include <QDialog>
-
#include <QComboBox>
-
#include <QLabel>
-
#include <QTextEdit>
-
#include <QPushButton>
-
#include <QLineEdit>
-
class Palette : public QDialog
-
{
-
Q_OBJECT
-
-
public:
-
Palette(QWidget *parent = 0);
-
~Palette();
-
void createCtrlFrame(); //完成窗体左半部分颜色选择区的创建
-
void createContentFrame(); //完成窗体右半部分的创建
-
void fillColorList(QComboBox *comboBox);
-
//完成向颜色下拉列表框中插入颜色的工作
-
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 // PALETTE_H
palette.cpp
-
#include "palette.h"
-
#include <QHBoxLayout>
-
#include <QGridLayout>
-
Palette::Palette(QWidget *parent)
-
: QDialog(parent)
-
{
-
createCtrlFrame();
-
createContentFrame();
-
QHBoxLayout *mainLayout =new QHBoxLayout(this);
-
mainLayout->addWidget(ctrlFrame);
-
mainLayout->addWidget(contentFrame);
-
}
-
-
Palette::~Palette()
-
{
-
-
}
-
-
void Palette::createCtrlFrame()
-
{
-
ctrlFrame =new QFrame; //颜色选择面板
-
windowLabel =new QLabel(tr("QPalette::Window: "));
-
windowComboBox =new QComboBox; //创建一个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 Palette::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->addStretch(1);
-
BottomLayout->addWidget(OkBtn);
-
BottomLayout->addWidget(CancelBtn);
-
QVBoxLayout *mainLayout =new QVBoxLayout(contentFrame);
-
mainLayout->addLayout(TopLayout);
-
mainLayout->addLayout(BottomLayout);
-
}
-
-
void Palette::fillColorList(QComboBox *comboBox)
-
{
-
QStringList colorList = QColor::colorNames();
-
QString color;
-
foreach(color,colorList)
-
{
-
QPixmap pix(QSize(70,20));
-
pix.fill(QColor(color));
-
comboBox->addItem(QIcon(pix),NULL);
-
comboBox->setIconSize(QSize(70,20));
-
comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
-
//(f)
-
}
-
}
-
/*
-
* 用于响应对背景颜色的选择
-
*/
-
void Palette::ShowWindow()
-
{
-
QStringList colorList = QColor::colorNames();
-
QColor color = QColor(colorList[windowComboBox->currentIndex()]);
-
QPalette p = contentFrame->palette();
-
p.setColor(QPalette::Window,color);
-
contentFrame->setPalette(p);
-
contentFrame->update();
-
}
-
/*
-
* 用于响应对应文字颜色的选择
-
*/
-
void Palette::ShowWindowText()
-
{
-
-
QStringList colorList = QColor::colorNames();
-
QColor color = colorList[windowTextComboBox->currentIndex()];
-
QPalette p = contentFrame->palette();
-
p.setColor(QPalette::WindowText,color);
-
contentFrame->setPalette(p);
-
}
-
-
void Palette::ShowButton()
-
{
-
QStringList colorList = QColor::colorNames();
-
QColor color =QColor(colorList[buttonComboBox->currentIndex()]);
-
QPalette p = contentFrame->palette();
-
p.setColor(QPalette::Button,color);
-
contentFrame->setPalette(p);
-
contentFrame->update();
-
}
-
-
void Palette::ShowButtonText()
-
{
-
QStringList colorList = QColor::colorNames();
-
QColor color = QColor(colorList[buttonTextComboBox->currentIndex()]);
-
QPalette p =contentFrame->palette();
-
p.setColor(QPalette::ButtonText,color);
-
contentFrame->setPalette(p);
-
}
-
-
void Palette::ShowBase()
-
{
-
QStringList colorList = QColor::colorNames();
-
QColor color = QColor(colorList[baseComboBox->currentIndex()]);
-
QPalette p = contentFrame->palette();
-
p.setColor(QPalette::Base,color);
-
contentFrame->setPalette(p);
-
}
文章来源: dreamlife.blog.csdn.net,作者:DreamLife.,版权归原作者所有,如需转载,请联系作者。
原文链接:dreamlife.blog.csdn.net/article/details/79381247
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)