Qt:调色板简单部件的基本应用QPalette

在这里插入图片描述
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:

  1. setSizeAdjustPolicy( ) 设置尺寸策略
    QComboBox::AdjustToContents 内容变化

  2. ->palette() 当前调色板

  3. setpalette( ) 设置调色板

  4. setcolor( ) 设置颜色

  5. QPalette::Window 窗口

  6. QPalette::WindowText 窗口文本

  7. QPalette::Button 按钮

  8. QPalette::ButtonText按钮文本

  9. QPalette::Base 背景

填充颜色链表

  1. 获取所有颜色
  2. 循环添加颜色 使用QPixmap
  3. 定义QPixmap
  4. 填充
  5. 下拉组合框添加项目
  6. 下拉组合框设置项目大小
  7. 下拉组合框设置尺寸策略

部件颜色设置 QPalette调色板

  1. 获取所有颜色

  2. 获取当前所选颜色

  3. 获取当前框架调色板

  4. 调色板设置颜色

  5. 框架设置调色板

                                                                  ***奇牛***  
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值