龙空技术网

Qt之对话框设计——利用QPalette改变控件颜色

音视频开发老舅 574

前言:

现时小伙伴们对“vs2019 控件web自定义颜色”大致比较看重,兄弟们都想要了解一些“vs2019 控件web自定义颜色”的相关文章。那么小编也在网上汇集了一些有关“vs2019 控件web自定义颜色””的相关文章,希望你们能喜欢,大家一起来了解一下吧!

QPalette类相当于对话框或控件的调色板,它管理着控件或窗体的所有颜色信息,每个窗体或控件都包含一个QPalette对象,在显示时按照它的QPalette对象中对各部分各状态下的颜色的描述来进行绘制。

QPalette类有两个基本的概念,一个是ColorGroup,另一个是ColorRole。

void QPalette::setColor ( ColorRolerole, const QColor &color );void QPalette::setColor ( ColorGroupgroup, ColorRolerole, const QColor &color );void QPalette::setBrush ( ColorRolerole, const QBrush &brush );void QPalette::setBrush ( ColorGroupgroup, ColorRolerole, const QBrush &brush );

ColorGroup:

QPalette::Disabled

不可用状态

QPalette::Active

活跃状态(获得焦点)

QPalette::Inactive

不活跃状态(未获得焦点)

ColorRole:

QPalette::Window

一个常规的背景颜色

QPalette::Background

这个值是废弃的,使用window代替

QPalette::WindowText

一个一般的前景颜色

QPalette::Foreground

这个值是废弃的,使用windowText代替.

QPalette::Base

最长使用来作为text背景颜色为整个widget,但是也能被用来为其他的绘画,像combobox的上下清单的背景和工具栏句柄。它通常是白的或者其他亮的颜色.

QPalette::AlternateBase

被用来作为轮流的背景颜色,轮流的行颜色

QPalette::ToolTipBase

被用来作为背景颜色为QToolTip和QWhatsThis。工具尖端使用QPalette不活跃的颜色组,因为工具尖端不是活跃的窗口.

QPalette::ToolTipText

被用来作为前景颜色为QToolTip和QWhatsThis.工具尖端使用QPalette不活跃的颜色组,因为工具尖端不是活跃的窗口.

QPalette::Text

前景颜色使用base.这通常和windowText相同,它一定提供好的对比window和base

QPalette::Button

button背景颜色。这个背景颜色能是不同于window作为一些风格,要求一个不同的背景颜色作为button

QPalette::ButtonText

一个前景颜色被用来作为button颜色.

QPalette::BrightText

一个text颜色是很不同于windowText,很好的对比与dark。典型的被用来为text,需要被画,在text或者windowText将给差的对比,就像在按下的button。注意text颜色能被用来为事情,而不只是单词;text颜色通常被用来为text,但是他是相当普通的使用text颜色角色为行,图标,等等。

另外,在设置对话框和控件的背景色时还会用到:

void setAutoFillBackground ( bool enabled );

【领QT开发教程学习资料,点击下方链接莬费领取↓↓,先码住不迷路~】

点击→领取「链接」

maindlg.h

    #ifndef MAINDLG_H      #define MAINDLG_H            #include <QtGui/QDialog>      #include <QFrame>      #include <QComboBox>                  class MainDlg : public QDialog      {          Q_OBJECT            public:          MainDlg(QWidget *parent = 0, Qt::WFlags flags = 0);          ~MainDlg();                void createCtrlFrame();          void createContentFrame();          void fillColorList(QComboBox *);            public slots:          void sl_window();          void sl_windowText();          void sl_button();          void sl_buttonText();          void sl_base();            private:          QFrame *ctrlFrame;  //颜色选择面板          QFrame *contentFrame;   //具体显示面板          QComboBox *cbbWindow;          QComboBox *cbbWindowText;          QComboBox *cbbButton;          QComboBox *cbbButtonText;          QComboBox * cbbBase;                };            #endif // MAINDLG_H  

maindlg.cpp

    #include "maindlg.h"      #include <QPalette>      #include <QHBoxLayout>      #include <QVBoxLayout>      #include <QGridLayout>      #include <QStringList>      #include <QColor>      #include <QPixmap>      #include <QSpinBox>      #include <QTextEdit>      #include <QLineEdit>      #include <QPushButton>      #include <QLabel>            MainDlg::MainDlg(QWidget *parent, Qt::WFlags flags)          : QDialog(parent, flags)      {          createCtrlFrame();          createContentFrame();                QHBoxLayout *mainLayout = new QHBoxLayout(this);          mainLayout->addWidget(ctrlFrame);          mainLayout->addWidget(contentFrame);          mainLayout->setMargin(10);          mainLayout->setSpacing(5);          mainLayout->setSizeConstraint(QLayout::SetFixedSize);      }            MainDlg::~MainDlg()      {            }            void MainDlg::fillColorList(QComboBox *cbb)      {          QStringList colorNameList = QColor::colorNames();                QString colorName;          foreach(colorName,colorNameList)          {              QPixmap pix_color(70,20);              pix_color.fill(QColor(colorName));                    cbb->addItem(QIcon(pix_color),NULL);              cbb->setIconSize(QSize(70,20));              cbb->setSizeAdjustPolicy(QComboBox::AdjustToContents);   //设置下拉列表的尺寸符合内容的大小          }      }            void MainDlg::createCtrlFrame()      {          ctrlFrame = new QFrame;                QLabel *labWindow = new QLabel(tr("QPalette::Window:"));          QLabel *labWindowText = new QLabel(tr("QPalette::WindowText:"));          QLabel *labButton = new QLabel(tr("QPalette::Button:"));          QLabel *labButtonText = new QLabel(tr("QPalette::ButtonText:"));          QLabel *labBase = new QLabel(tr("QPalette::Base:"));                cbbWindow = new QComboBox;          fillColorList(cbbWindow);          connect(cbbWindow,SIGNAL(activated(int)),this,SLOT(sl_window()));          cbbWindowText = new QComboBox;          fillColorList(cbbWindowText);          connect(cbbWindowText,SIGNAL(activated(int)),this,SLOT(sl_windowText()));          cbbButton = new QComboBox;          fillColorList(cbbButton);          connect(cbbButton,SIGNAL(activated(int)),this,SLOT(sl_button()));          cbbButtonText = new QComboBox;          fillColorList(cbbButtonText);          connect(cbbButtonText,SIGNAL(activated(int)),this,SLOT(sl_buttonText()));          cbbBase = new QComboBox;          fillColorList(cbbBase);          connect(cbbBase,SIGNAL(activated(int)),this,SLOT(sl_base()));                    int col_lab = 0;          int col_cbb = 1;          QGridLayout *ctrlLayout = new QGridLayout(ctrlFrame);          ctrlLayout->addWidget(labWindow,0,col_lab);          ctrlLayout->addWidget(labWindowText,1,col_lab);          ctrlLayout->addWidget(labButton,2,col_lab);          ctrlLayout->addWidget(labButtonText,3,col_lab);          ctrlLayout->addWidget(labBase,4,col_lab);          ctrlLayout->addWidget(cbbWindow,0,col_cbb);          ctrlLayout->addWidget(cbbWindowText,1,col_cbb);          ctrlLayout->addWidget(cbbButton,2,col_cbb);          ctrlLayout->addWidget(cbbButtonText,3,col_cbb);          ctrlLayout->addWidget(cbbBase,4,col_cbb);          ctrlLayout->setMargin(5);          ctrlLayout->setSpacing(5);      }            void MainDlg::createContentFrame()      {          contentFrame = new QFrame;                    QLabel *labValue = new QLabel(tr("Please select one of the values:"));          QSpinBox *spbValue = new QSpinBox;          QHBoxLayout *valueLayout = new QHBoxLayout;          valueLayout->addWidget(labValue);          valueLayout->addWidget(spbValue);          valueLayout->setSpacing(5);                QLabel *labString = new QLabel(tr("Please input a string"));          QLineEdit *edtString = new QLineEdit;          QHBoxLayout *stringLayout = new QHBoxLayout;          stringLayout->addWidget(labString);          stringLayout->addWidget(edtString);          stringLayout->setSpacing(5);                QTextEdit *edtHelloQt = new QTextEdit(tr("Hello Qt!"));                    QPushButton *btnOk = new QPushButton(tr("OK"));          QPushButton *btnCancel =new QPushButton(tr("Cancel"));          QHBoxLayout *buttonLayout = new QHBoxLayout;          buttonLayout->addStretch(1);          buttonLayout->addWidget(btnOk);          buttonLayout->addWidget(btnCancel);          buttonLayout->setSpacing(5);                QVBoxLayout *contentLayout = new QVBoxLayout(contentFrame);          contentLayout->addLayout(valueLayout);          contentLayout->addLayout(stringLayout);          contentLayout->addWidget(edtHelloQt);          contentLayout->addLayout(buttonLayout);          contentLayout->setMargin(5);          contentLayout->setSpacing(5);                btnOk->setAutoFillBackground(true);          btnCancel->setAutoFillBackground(true);          contentFrame->setAutoFillBackground(true);      }            void MainDlg::sl_window()      {          QStringList colorList = QColor::colorNames();          QColor color = QColor(colorList[cbbWindow->currentIndex()]);          QPalette p = contentFrame->palette();          p.setColor(QPalette::Window,color);          contentFrame->setPalette(p);      }            void MainDlg::sl_windowText()      {          QStringList colorList = QColor::colorNames();          QColor color = QColor(colorList[cbbWindowText->currentIndex()]);          QPalette p = contentFrame->palette();          p.setColor(QPalette::WindowText,color);          contentFrame->setPalette(p);      }            void MainDlg::sl_button()      {          QStringList colorNameList = QColor::colorNames();          QColor m_color = QColor(colorNameList[cbbButton->currentIndex()]);          QPalette p = contentFrame->palette();          p.setColor(QPalette::Button,m_color);          contentFrame->setPalette(p);      }            void MainDlg::sl_buttonText()      {          QStringList colorNameList = QColor::colorNames();          QColor m_color = QColor(colorNameList[cbbButtonText->currentIndex()]);          QPalette p = contentFrame->palette();          p.setColor(QPalette::ButtonText,m_color);          contentFrame->setPalette(p);      }                  void MainDlg::sl_base()      {          QStringList colorNameList = QColor::colorNames();          QColor m_color = QColor(colorNameList[cbbBase->currentIndex()]);          QPalette p = contentFrame->palette();          p.setColor(QPalette::Base,m_color);          contentFrame->setPalette(p);      }  

标签: #vs2019 控件web自定义颜色 #aspnet窗体颜色