Qt 中的调色板(QPalette)

1、Qt中的调色板 

QPalette类包含了组件状态的颜色组 

QPalette对象包含3个状态的颜色描述

      -激活颜色组(Active) :组件获得焦点使用的颜色搭配方案

      -非激活颜色组(Inactive) :组件失去焦点使用的颜色方案

      -失效颜色组(Disabled) :组件处于不可用状态使用的颜色方案 

QPalette::ColorGroup定义了组细节的颜色值 

QPalette::ColorRole中的常量值用于标识组件细节 

enum ColorGroup { Disabled, Active, Inactive, Normal }
enum ColorRole { Window, Background, WindowText, Foreground, ..., NoRole }

Qt 中的调色板(QPalette)_第1张图片

理解Qt中的调色板 

Qt 中的调色板(QPalette)_第2张图片

                调色板是存储组件颜色信息的数据结构 ,组件外观所使用的颜色都定于调色板中 

调色板的使用方式 

Qt 中的调色板(QPalette)_第3张图片

2、编程实验 

Widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include 
#include 
#include 

class Widget : public QWidget
{
    Q_OBJECT
    
    QPushButton m_button;
    QLineEdit m_edit;
    QLabel m_label;
protected slots:
    void onButtonClicked();
public:
    Widget(QWidget *parent = 0);
    ~Widget();
};

#endif // WIDGET_H

Widget.cpp

#include "Widget.h"
#include 

Widget::Widget(QWidget *parent)
    : QWidget(parent), m_button(this), m_edit(this), m_label(this)
{
    m_label.move(10, 10);
    m_label.resize(150, 25);
    m_label.setText("Test");

    m_edit.move(10, 45);
    m_edit.resize(150, 25);

    m_button.move(10, 80);
    m_button.resize(150, 25);
    m_button.setText("Test");

    connect(&m_button, SIGNAL(clicked()), this, SLOT(onButtonClicked()));

    QPalette p = m_button.palette();

    p.setColor(QPalette::Active, QPalette::ButtonText, Qt::red);
    p.setColor(QPalette::Inactive, QPalette::ButtonText, Qt::red);

    m_button.setPalette(p);

    p = m_edit.palette();

    p.setColor(QPalette::Inactive, QPalette::Highlight, Qt::blue);
    p.setColor(QPalette::Inactive, QPalette::HighlightedText, Qt::white);

    m_edit.setPalette(p);
}

void Widget::onButtonClicked()
{
    QPalette p = m_label.palette();

    p.setColor(QPalette::Active, QPalette::WindowText, Qt::green);
    p.setColor(QPalette::Inactive, QPalette::WindowText, Qt::green);

    m_label.setPalette(p);
}

Widget::~Widget()
{
    
}

Qt 中的调色板(QPalette)_第4张图片

3、小结 

QPalette是Qt中标识颜色信息的数据结构 

窗口组件内部都拥有QPalette对象 

重新设置组件调色板的值能够改变特定区域的颜色 

QPalette对象是定制组件外观的重要角色 

你可能感兴趣的:(QT【笔记】)