• 26.QT颜色与布局


    dialog.h

     1 #ifndef PALETTE_H
     2 #define PALETTE_H
     3 
     4 #include <QDialog>
     5 #include <QComboBox>
     6 #include <QLabel>
     7 #include <QTextEdit>
     8 #include <QPushButton>
     9 #include <QLineEdit>
    10 
    11 class Palette : public QDialog
    12 {
    13     Q_OBJECT
    14 
    15 public:
    16     Palette(QWidget *parent = 0);
    17     ~Palette();
    18 
    19     //创建左边布局
    20     void createCtrlFrame();
    21     //创建右边布局
    22     void createContentFrame();
    23     //给下拉框填充颜色
    24     void fillColorList(QComboBox *);
    25 
    26 private slots:
    27     void showWindow();
    28     void showWindowText();
    29     void showButton();
    30     void showButtonText();
    31     void showBase();
    32 
    33 private:
    34     QFrame *ctrlFrame;
    35     QLabel *windowLabel;
    36     QComboBox *windowComboBox;
    37     QLabel *windowTextLabel;
    38     QComboBox *windowTextComboBox;
    39     QLabel *buttonLabel;
    40     QComboBox *buttonComboBox;
    41     QLabel *buttonTextLabel;
    42     QComboBox *buttonTextComboBox;
    43     QLabel *baseLabel;
    44     QComboBox *baseComboBox;
    45     QFrame *contentFrame;
    46     QLabel *label1;
    47     QComboBox *comboBox1;
    48     QLabel *label2;
    49     QLineEdit *lineEdit2;
    50     QTextEdit *textEdit;
    51     QPushButton *okBtn;
    52     QPushButton *cancelBtn;
    53 };
    54 
    55 #endif // PALETTE_H

    dialog.cpp

      1 #include "dialog.h"
      2 #include <QHBoxLayout>
      3 #include <QGridLayout>
      4 #include <QPalette>
      5 #include <QBoxLayout>
      6 
      7 Palette::Palette(QWidget *parent)
      8     : QDialog(parent)
      9 {
     10     createCtrlFrame();
     11     createContentFrame();
     12     QHBoxLayout *mainLayout = new QHBoxLayout(this);
     13     mainLayout->addWidget(ctrlFrame);
     14     mainLayout->addWidget(contentFrame);
     15 }
     16 
     17 //创建左边布局
     18 void Palette::createCtrlFrame()
     19 {
     20     //创建框架
     21     ctrlFrame = new QFrame;
     22 
     23     //窗口背景色
     24     windowLabel = new QLabel(tr("控件背景色: "));
     25     windowComboBox = new QComboBox;
     26     fillColorList(windowComboBox);
     27     //控件与时间绑定
     28     connect(windowComboBox,SIGNAL(activated(int)),this,SLOT(showWindow()));
     29 
     30      //窗口前景色
     31     windowTextLabel = new QLabel(tr("窗口字体颜色: "));
     32     windowTextComboBox = new QComboBox;
     33     fillColorList(windowTextComboBox);
     34     connect(windowTextComboBox,SIGNAL(activated(int)),this,SLOT(showWindowText()));
     35 
     36     //窗口按钮的颜色
     37     buttonLabel = new QLabel(tr("窗口按钮的颜色: "));
     38     buttonComboBox = new QComboBox;
     39     fillColorList(buttonComboBox);
     40     connect(buttonComboBox,SIGNAL(activated(int)),this,SLOT(showButton()));
     41 
     42     //窗口按钮上面文本的颜色
     43     buttonTextLabel = new QLabel(tr("窗口按钮上面文本的颜色: "));
     44     buttonTextComboBox = new QComboBox;
     45     fillColorList(buttonTextComboBox);
     46     connect(buttonTextComboBox,SIGNAL(activated(int)),this,SLOT(showButtonText()));
     47 
     48     //编辑框背景色
     49     baseLabel = new QLabel(tr("编辑框背景色: "));
     50     baseComboBox = new QComboBox;
     51     fillColorList(baseComboBox);
     52     connect(baseComboBox,SIGNAL(activated(int)),this,SLOT(showBase()));
     53 
     54     //创建网格布局,框架是ctrFrame
     55     QGridLayout *mainLayout = new QGridLayout(ctrlFrame);
     56     //设置间距
     57     mainLayout->setSpacing(20);
     58     mainLayout->addWidget(windowLabel,0,0);
     59     mainLayout->addWidget(windowComboBox,0,1);
     60 
     61     mainLayout->addWidget(windowTextLabel,1,0);
     62     mainLayout->addWidget(windowTextComboBox,1,1);
     63 
     64     mainLayout->addWidget(buttonLabel,2,0);
     65     mainLayout->addWidget(buttonComboBox,2,1);
     66 
     67     mainLayout->addWidget(buttonTextLabel,3,0);
     68     mainLayout->addWidget(buttonTextComboBox,3,1);
     69 
     70     mainLayout->addWidget(baseLabel,4,0);
     71     mainLayout->addWidget(baseComboBox,4,1);
     72 
     73 }
     74 
     75 //创建右边布局
     76 void Palette::createContentFrame()
     77 {
     78     contentFrame = new QFrame;
     79     label1 = new QLabel(tr("请选择一个值:"));
     80     comboBox1 = new QComboBox;
     81 
     82     label2 = new QLabel(tr("请输入字符串: "));
     83     lineEdit2 = new QLineEdit;
     84 
     85     textEdit = new QTextEdit;
     86 
     87     //创建网格布局
     88     QGridLayout *topLayout = new QGridLayout;
     89     topLayout->addWidget(label1,0,0);
     90     topLayout->addWidget(comboBox1,0,1);
     91     topLayout->addWidget(label2,1,0);
     92     topLayout->addWidget(lineEdit2,1,1);
     93     topLayout->addWidget(textEdit,2,0,1,2);
     94 
     95     okBtn = new QPushButton(tr("确认"));
     96     cancelBtn = new QPushButton(tr("取消"));
     97 
     98     //创建水平布局
     99     QHBoxLayout *bottomLayout = new QHBoxLayout;
    100     //设置伸缩性
    101     bottomLayout->addStretch(1);
    102     bottomLayout->addWidget(okBtn);
    103     bottomLayout->addWidget(cancelBtn);
    104 
    105     //创建垂直布局,把两个布局加入,框架是contentFrame
    106     QVBoxLayout *mainlayout = new QVBoxLayout(contentFrame);
    107     mainlayout->addLayout(topLayout);
    108     mainlayout->addLayout(bottomLayout);
    109 
    110     //允许自动填充
    111     okBtn->setAutoFillBackground(true);
    112     cancelBtn->setAutoFillBackground(true);
    113     //设置可以填充
    114     contentFrame->setAutoFillBackground(true);
    115 }
    116 
    117 //用于控制背景颜色的显示
    118 void Palette::showWindow()
    119 {
    120     QStringList colorList = QColor::colorNames();
    121     QColor color = QColor(colorList[windowComboBox->currentIndex()]);
    122 
    123 
    124     QPalette p = contentFrame->palette();
    125     p.setColor(QPalette::Window, color);
    126     contentFrame->setPalette(p);
    127 
    128     contentFrame->update();
    129 }
    130 
    131 //对窗体的前景色进行设置
    132 void Palette::showWindowText()
    133 {
    134     QStringList colorList = QColor::colorNames();
    135     QColor color = colorList[windowTextComboBox->currentIndex()];
    136 
    137     QPalette p = contentFrame->palette();
    138     p.setColor(QPalette::WindowText, color);
    139     contentFrame->setPalette(p);
    140 }
    141 
    142 //按钮文字颜色设置
    143 void Palette::showButtonText()
    144 {
    145     QStringList colorList = QColor::colorNames();
    146     QColor color = QColor(colorList[buttonTextComboBox->currentIndex()]);
    147 
    148     QPalette p = contentFrame->palette();
    149     p.setColor(QPalette::ButtonText , color);
    150     contentFrame->setPalette(p);
    151 }
    152 
    153 //edit背景颜色设置
    154 void Palette::showBase()
    155 {
    156     QStringList colorList = QColor::colorNames();
    157     QColor color = QColor(colorList[baseComboBox->currentIndex()]);
    158 
    159     QPalette p = contentFrame->palette();
    160     p.setColor(QPalette::Base , color);
    161     contentFrame->setPalette(p);
    162 }
    163 
    164 //控件添加颜色
    165 void Palette::fillColorList(QComboBox *comboBox)
    166 {
    167     QStringList colorList = QColor::colorNames();
    168     QString color;
    169 
    170     foreach (color, colorList)
    171     {
    172         QPixmap pix(QSize(70,20));
    173         pix.fill(QColor(color));
    174         comboBox->addItem(QIcon(pix), NULL);
    175         comboBox->setIconSize(QSize(70,20));
    176         comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
    177     }
    178 }
    179 
    180 //按钮颜色设置
    181 void Palette::showButton()
    182 {
    183     QStringList colorList = QColor::colorNames();
    184     QColor color = QColor(colorList[buttonComboBox->currentIndex()]);
    185 
    186     //contentFrame->setAutoFillBackground(true);
    187 
    188     QPalette p = contentFrame->palette();
    189     p.setColor(QPalette::Button , color);
    190     contentFrame->setPalette(p);
    191 
    192     contentFrame->update();
    193 
    194 }
    195 
    196 Palette::~Palette()
    197 {
    198 
    199 }
  • 相关阅读:
    linux引导系统
    Android开发面试经——2.常见Android基础笔试题
    Android开发面试经——1.常见人事面试问题
    Android面试题整理【转载】
    android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决
    Android软键盘弹出时把布局顶上去的解决方法
    Android入门:绑定本地服务
    Android aidl Binder框架浅析
    Android LayoutInflater深度解析 给你带来全新的认识
    Android RecyclerView 使用完全解析 体验艺术般的控件
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8763119.html
Copyright © 2020-2023  润新知