概述
QPalette的使用
- 程序
- 效果展示
程序
.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*);
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
//.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);
contentFrame->setAutoFillBackground(true);//设置背景自动填充
}
Palette::~Palette()
{
}
void Palette::createCtrlFrame()//创建颜色选择区
{
ctrlFrame=new QFrame;
windowLabel=new QLabel("QPalette::Window:");
windowComboBox=new QComboBox;
fillColorList(windowComboBox);//向下拉列表里插入不同的颜色选项
connect(windowComboBox,SIGNAL(activated(int)),this,SLOT(ShowWindow()));
windowTextLabel=new QLabel("QPalette::WindowText:");
windowTextComboBox=new QComboBox;
fillColorList(windowTextComboBox);//向下拉列表里插入不同的颜色选项
connect(windowTextComboBox,SIGNAL(activated(int)),this,SLOT(ShowWindowText()));
buttonLabel=new QLabel("QPalette::Button:");
buttonComboBox=new QComboBox;
fillColorList(buttonComboBox);//向下拉列表里插入不同的颜色选项
connect(buttonComboBox,SIGNAL(activated(int)),this,SLOT(ShowButton()));
buttonTextLabel=new QLabel("QPalette::ButtonText:");
buttonTextComboBox=new QComboBox;
fillColorList(buttonTextComboBox);//向下拉列表里插入不同的颜色选项
connect(buttonTextComboBox,SIGNAL(activated(int)),this,SLOT(ShowButtonText()));
baseLabel=new QLabel("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("请选择一个值:");
comboBox1=new QComboBox;
label2=new QLabel("请输入字符串:");
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("确认");
CancelBtn=new QPushButton("取消");
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();//获得QT所有内置名称的颜色名列表,返回一个字符串列表
QString color;//新建一个QColor为循环遍历做准备
foreach (color, colorList)
{
QPixmap pix(QSize(70,20));//新建一个QPixmap对象pix作为显示颜色的图标
pix.fill(QColor(color));//为pix填充当前遍历的颜色
comboBox->addItem(QIcon(pix),NULL);//将遍历到的pix插入comboBox,名称设为NULL
comboBox->setIconSize(QSize(70,20));//设置图标的尺寸和pix相同
comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);//设置下拉列表框的尺寸调整策略为符合内容大小的尺寸
}
}
void Palette::ShowWindow()
{
QStringList colorList=QColor::colorNames();//获得QT所有内置名称的颜色名列表,返回一个字符串列表
QColor color=QColor(colorList[windowComboBox->currentIndex()]);//获取选中的颜色
QPalette p=contentFrame->palette();//获得右部窗体的调色板信息
p.setColor(QPalette::Window,color);//设置contentFrame的背景颜色为color
contentFrame->setPalette(p);
contentFrame->update();
}
void Palette::ShowWindowText()
{
QStringList colorList=QColor::colorNames();
QColor color=QColor(colorList[windowTextComboBox->currentIndex()]);
QPalette p=contentFrame->palette();
p.setColor(QPalette::Window,color);
contentFrame->setPalette(p);
}
void Palette::ShowButton()
{
QStringList colorList=QColor::colorNames();
QColor color=QColor(colorList[buttonComboBox->currentIndex()]);
QPalette p=contentFrame->palette();
p.setColor(QPalette::Window,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::Window,color);
contentFrame->setPalette(p);
}
void Palette::ShowBase()
{
QStringList colorList=QColor::colorNames();
QColor color=QColor(colorList[baseComboBox->currentIndex()]);
QPalette p=contentFrame->palette();
p.setColor(QPalette::Window,color);
contentFrame->setPalette(p);
}
效果展示
最后
以上就是无奈蜡烛为你收集整理的QT调色板QPalette的使用程序效果展示的全部内容,希望文章能够帮你解决QT调色板QPalette的使用程序效果展示所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复