dialog,h
#ifndef DIALOG_H
#define DIALOG_H
#include <QLabel>
#include <QFrame>
#include <QComboBox>
#include <QDialog>
#include <QTextEdit>
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = 0);
~Dialog();
void createCtrFrame();
//给组合框添加颜色链表
void fillColorList(QComboBox* comboBox);
//创建内容
createContentFrame();
public slots:
void showWindow(int index); //显示窗口
void showWindowText(int index); //显示窗口自文本
void showButton(int index); //显示按钮
void showButtonText(int index); //显示按钮文本
void showBase(int index); //背景颜色
private:
QFrame *m_ctrFrame;
QLabel *m_windowLabel;
QComboBox *m_windowComboBox;
QLabel *m_windowTextLabel;
QComboBox *m_windowTextComboBox;
QLabel *m_buttonLabel;
QComboBox *m_buttonCombox;
QLabel *m_buttonTextLabel;
QComboBox *m_buttonTextComboBox;
QLabel *m_baseLabel;
QComboBox*m_baseComboBox;
QFrame *m_contentFrame;
QLabel *m_label1;
QLabel *m_label2;
QComboBox *m_comboBox1;
QLineEdit *m_lineEdit;
QTextEdit *m_textEdit;
QPushButton *m_okBtnl;
QPushButton *m_cancelBtn;
};
#endif // DIALOG_H
.cpp
#include "dialog.h"
#include <QVBoxLayout>
#include <QGridLayout>
#include <QLineEdit>
#include <QPushButton>
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
createCtrFrame();
createContentFrame();
QHBoxLayout * mainlayout = new QHBoxLayout(this);
mainlayout->addWidget(m_ctrFrame);
mainlayout->addWidget(m_contentFrame);
}
Dialog::~Dialog()
{
}
void Dialog::createCtrFrame()
{
//框架
m_ctrFrame = new QFrame;
m_ctrFrame->setFrameStyle(QFrame::Sunken | QFrame::Box); // 框架设置样式
m_windowLabel = new QLabel("QPalette::Window");
m_windowComboBox = new QComboBox;
fillColorList(m_windowComboBox);
connect(m_windowComboBox,SIGNAL(activated(int)),
this,SLOT(showWindow(int )));
m_windowTextLabel = new QLabel("QPalette::WindowText");
m_windowTextComboBox = new QComboBox;
fillColorList(m_windowTextComboBox);
connect(m_windowTextComboBox,SIGNAL(activated(int)),
this,SLOT(showWindowText(int )));
m_buttonLabel = new QLabel("QPatte:Button");
m_buttonCombox = new QComboBox;
fillColorList(m_buttonCombox);
connect(m_buttonCombox,SIGNAL(activated(int)),
this,SLOT(showButton(int )));
m_buttonTextLabel = new QLabel("QPatte::ButtonText");
m_buttonTextComboBox = new QComboBox;
fillColorList(m_buttonTextComboBox);
connect(m_buttonTextComboBox,SIGNAL(activated(int)),
this,SLOT(showButtonText(int )));
m_baseLabel = new QLabel("QPalette::Base");
m_baseComboBox = new QComboBox;
fillColorList(m_baseComboBox);
connect(m_baseComboBox,SIGNAL(activated(int)),
this,SLOT(showBase(int )));
QGridLayout* mainLayout = new QGridLayout(m_ctrFrame);
mainLayout->setSpacing(10);
mainLayout->addWidget(m_windowLabel,0,0);
mainLayout->addWidget(m_windowComboBox,0,1);
mainLayout->addWidget(m_windowTextLabel,1,0);
mainLayout->addWidget(m_windowTextComboBox,1,1);
mainLayout->addWidget(m_buttonLabel,2,0);
mainLayout->addWidget(m_buttonCombox,2,1);
mainLayout->addWidget(m_buttonTextLabel,3,0);
mainLayout->addWidget(m_buttonTextComboBox,3,1);
mainLayout->addWidget(m_baseLabel,4,0);
mainLayout->addWidget(m_baseComboBox,4,1);
}
void Dialog::fillColorList(QComboBox *comboBox)
{
QStringList ColorList = QColor::colorNames();
QString color;
foreach (color, ColorList) {
QPixmap pix(QSize(70,20));
pix.fill(color); //图片填充颜色
comboBox->addItem(QPixmap(pix),NULL); //下拉框添加
comboBox->setIconSize(pix.size()); //下拉框设置大小
comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); //设置尺寸策略 随内容变化
}
}
Dialog::createContentFrame()
{
m_contentFrame = new QFrame;
m_contentFrame->setAutoFillBackground(true); //自动填充背景
m_label1 = new QLabel("请选择一个值");
m_label2 = new QLabel("请输入字符串");
m_comboBox1 = new QComboBox;
m_lineEdit = new QLineEdit;
m_textEdit = new QTextEdit;
m_okBtnl = new QPushButton(QString("确认"));
m_cancelBtn = new QPushButton(QString("取消"));
m_okBtnl->setAutoFillBackground(true);
QGridLayout* Toplayout = new QGridLayout;
Toplayout->addWidget(m_label1,0,0);
Toplayout->addWidget(m_comboBox1,0,1);
Toplayout->addWidget(m_label2,1,0);
Toplayout->addWidget(m_lineEdit,1,1);
Toplayout->addWidget(m_textEdit,2,0,1,2);
QHBoxLayout *bottomLayout = new QHBoxLayout;
bottomLayout->addWidget(m_okBtnl);
bottomLayout->addWidget(m_cancelBtn);
QVBoxLayout *mainLayout = new QVBoxLayout(m_contentFrame);
mainLayout->addLayout(Toplayout);
mainLayout->addLayout(bottomLayout);
}
void Dialog::showWindow(int index)
{
QStringList colorList = QColor::colorNames();
QColor color = QColor(colorList[index]);
QPalette p = m_contentFrame->palette(); //获取调色板
p.setColor(QPalette::Window,color); //设置颜色
m_contentFrame->setPalette(p); //设置调色板
}
void Dialog::showWindowText(int index)
{
QStringList colorList = QColor::colorNames();
QColor color = QColor(colorList[index]);
QPalette p = m_contentFrame->palette();
p.setColor(QPalette::WindowText,color);
m_contentFrame->setPalette(p);
}
void Dialog::showButton(int index)
{
QStringList colorList =QColor::colorNames();
QColor color = colorList[index];
QPalette p = m_contentFrame->palette();
p.setColor(QPalette::Button,color);
m_contentFrame->setPalette(p);
}
void Dialog::showButtonText(int index)
{
QStringList colorList = QColor::colorNames();
QColor color = colorList[index];
QPalette p = m_contentFrame->palette();
p.setColor(QPalette::ButtonText,color);
m_contentFrame->setPalette(p);
}
void Dialog::showBase(int index)
{
QStringList colorList = QColor::colorNames();
QColor color = QColor(colorList[index]);
QPalette p = m_contentFrame->palette();
p.setColor(QPalette::Base,color);
m_contentFrame->setPalette(p);
}
QComboBox:
-
setSizeAdjustPolicy( ) 设置尺寸策略
QComboBox::AdjustToContents 内容变化 -
->palette() 当前调色板
-
setpalette( ) 设置调色板
-
setcolor( ) 设置颜色
-
QPalette::Window 窗口
-
QPalette::WindowText 窗口文本
-
QPalette::Button 按钮
-
QPalette::ButtonText按钮文本
-
QPalette::Base 背景
填充颜色链表
- 获取所有颜色
- 循环添加颜色 使用QPixmap
- 定义QPixmap
- 填充
- 下拉组合框添加项目
- 下拉组合框设置项目大小
- 下拉组合框设置尺寸策略
部件颜色设置 QPalette调色板
-
获取所有颜色
-
获取当前所选颜色
-
获取当前框架调色板
-
调色板设置颜色
-
框架设置调色板
***奇牛***