【Qt5开发及实例】11、QPalette调色板使用

我做的这个不知道为什么有两个功能无法显示,也没有报错,我暂时是想不出什么好办法= =

实现目标

palette.h

/**
* 书本:【Qt5开发及实例】
* 功能:实现调色板的使用QPalette
* 文件:paletee.h
* 时间:2015年1月3日12:21:53
* 作者:cutter_point
*/
#ifndef PALETTE_H
#define PALETTE_H

#include <QDialog>
#include <QComboBox>
#include <QLabel>
#include <QTextEdit>
#include <QPushButton>
#include <QLineEdit>

class Palette : public QDialog
{
  Q_OBJECT

public:
  Palette(QWidget *parent = 0);
  ~Palette();
  //我们把这个界面分为两个部分,左边和右边
  //左边界面的创建
  void createCtrlFrame();
  //右边界面的创建
  void createContentFrame();
  //颜色下拉列表框中输入颜色的工作
  void fillColorList(QComboBox *);

private slots:  //槽函数,背景色,前景色显示
  void ShowWindow();
  void ShowWindowText();
  void ShowButton();
  void ShowButtonText();
  void ShowBase();

private:
  QFrame *ctrlFrame;      //颜色选择板,左板块
  QLabel *windowLabel;
  QComboBox *windowComboBox;
  QLabel *windowTextLabel;
  QComboBox *windowTextComboBox;
  QLabel *buttonLabel;
  QComboBox *buttonComboBox;
  QLabel *buttonTextLabel;
  QComboBox *buttonTextComboBox;
  QLabel *baseLabel;
  QComboBox *baseComboBox;

  QFrame *contentFrame;   //具体显示的面板,也就是右半块
  QLabel *label1;
  QComboBox *comboBox1;
  QLabel *label2;
  QLineEdit *lineEdit2;
  QTextEdit *textEdit;
  QPushButton *OkBtn;
  QPushButton *CancelBtn;

};

#endif // PALETTE_H

palette.cpp

/**
* 书本:【Qt5开发及实例】
* 功能:实现具体的调色板
* 文件:palette.h
* 时间:2015年1月3日12:20:05
* 作者:cutter_point
*/
#include "palette.h"

#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QGridLayout>
#include <QtDebug>

Palette::Palette(QWidget *parent)
  : QDialog(parent)
{//构造函数
  createCtrlFrame();    //构造左边界面
  createContentFrame();   //右边

  QHBoxLayout *mainLayout = new QHBoxLayout(this);
  mainLayout->addWidget(ctrlFrame);   //左边的界面添加进入
  mainLayout->addWidget(contentFrame);    //右边界面添加进入

}

//创建左边的颜色选择区
void Palette::createCtrlFrame()
{
  ctrlFrame = new QFrame;
  windowLabel = new QLabel(tr("QPalette::Window: "));   //显示背景色的选择
  windowComboBox = new QComboBox;
  fillColorList(windowComboBox);    //把所有的颜色都添加到这个下拉框里面
  connect(windowComboBox, SIGNAL(activated(int)), this, SLOT(ShowWindow()));

  windowTextLabel = new QLabel(tr("QPalette::WindowText: "));   //显示前景色的选择
  windowTextComboBox = new QComboBox;
  fillColorList(windowTextComboBox);    //把所有的颜色都添加到这个下拉框里面
  connect(windowTextComboBox, SIGNAL(activated(int)), this, SLOT(ShowWindowText()));

  buttonLabel = new QLabel(tr("QPalette::Button: "));   //显示前景色的选择
  buttonComboBox = new QComboBox;
  fillColorList(buttonComboBox);    //把所有的颜色都添加到这个下拉框里面
  connect(buttonComboBox, SIGNAL(activated(int)), this, SLOT(ShowButton()));

  buttonTextLabel = new QLabel(tr("QPalette::buttonText: "));   //显示前景色的选择
  buttonTextComboBox = new QComboBox;
  fillColorList(buttonTextComboBox);    //把所有的颜色都添加到这个下拉框里面
  connect(buttonTextComboBox, SIGNAL(activated(int)), this, SLOT(ShowButtonText()));

  baseLabel = new QLabel(tr("QPalette::base: "));   //显示前景色的选择
  baseComboBox = new QComboBox;
  fillColorList(baseComboBox);    //把所有的颜色都添加到这个下拉框里面
  connect(baseComboBox, SIGNAL(activated(int)), this, SLOT(ShowBase()));

  //网格布局
  QGridLayout *mainLayout = new QGridLayout(ctrlFrame);   //对左边的界面进行布局
  mainLayout->setSpacing(20);   //垂直和水平之间的间隔
  mainLayout->addWidget(windowLabel, 0, 0);
  mainLayout->addWidget(windowComboBox, 0, 1);
  mainLayout->addWidget(windowTextLabel, 1, 0);
  mainLayout->addWidget(windowTextComboBox, 1, 1);
  mainLayout->addWidget(buttonLabel, 2, 0);
  mainLayout->addWidget(buttonComboBox, 2, 1);
  mainLayout->addWidget(buttonTextLabel, 3, 0);
  mainLayout->addWidget(buttonTextComboBox, 3, 1);
  mainLayout->addWidget(baseLabel, 4, 0);
  mainLayout->addWidget(baseComboBox, 4, 1);

}

//右边窗口,显示颜色
void Palette::createContentFrame()
{
  contentFrame = new QFrame;    //创建右边界面
//  contentFrame->setFrameStyle(QFrame::Shadow_Mask);
  label1 = new QLabel(tr("please select one value: "));    //请不要吐槽我的English
  comboBox1 = new QComboBox;
  comboBox1->addItem(tr("1"));
  comboBox1->addItem(tr("2"));
  comboBox1->addItem(tr("3"));

  label2 = new QLabel(tr("please input String: "));    //请不要吐槽我的English
  lineEdit2 = new QLineEdit;

  textEdit = new QTextEdit;

  //网格布局
  QGridLayout *TopLayout = new QGridLayout;
  TopLayout->addWidget(label1, 0, 0);
  TopLayout->addWidget(comboBox1, 0, 1);
  TopLayout->addWidget(label2, 1, 0);
  TopLayout->addWidget(lineEdit2, 1, 1);
  TopLayout->addWidget(textEdit, 2, 0, 1, 2);   //行,列,占用行, 占用列,还有一个对齐方式没写出来

  OkBtn = new QPushButton(tr("ok"));    //确定
  CancelBtn = new QPushButton(tr("cancel"));    //取消

  QHBoxLayout *BottomLayout = new QHBoxLayout;
  BottomLayout->addStretch(1);    //一个弹簧
  BottomLayout->addWidget(OkBtn);
  BottomLayout->addWidget(CancelBtn);

  //整体垂直布局
  QVBoxLayout *mainLayout = new QVBoxLayout(contentFrame);
  mainLayout->addLayout(TopLayout);
  mainLayout->addLayout(BottomLayout);

}

//显示背景颜色
void Palette::ShowWindow()      //这个不知道为什么显示不出来!!!有的说是windows不支持,我也不太清楚2015年1月3日13:51:44
{
  QStringList colorList = QColor::colorNames();   //得到所有的颜色序列
  QColor color = QColor(colorList[windowComboBox->currentIndex()]);   //取得当前选中的序号,得到颜色
  QPalette p = contentFrame->palette();   //得到右边的调色板
  p.setColor(QPalette::Window, color);   //修改相应位置的颜色
  contentFrame->setPalette(p);     //把调色板的值给应用上去
  contentFrame->update();   //刷新界面,得到显示
  /*
   * QStringList colorList = QColor::colorNames();
    QColor color = QColor(colorList[cbbWindow->currentIndex()]);
    QPalette p = contentFrame->palette();
    p.setColor(QPalette::Window,color);
    contentFrame->setPalette(p);
   * */
}

//显示前景色
void Palette::ShowWindowText()
{
  QStringList colorList = QColor::colorNames();   //得到所有的颜色序列
  QColor color = QColor(colorList[windowTextComboBox->currentIndex()]);   //取得当前选中的序号,得到颜色

  QPalette p = contentFrame->palette();   //得到右边的调色板
  p.setColor(QPalette::WindowText, color);   //修改相应位置的颜色
  contentFrame->setPalette(p);     //把调色板的值给应用上去

//  contentFrame->update();
}

//按钮背景颜色
void Palette::ShowButton()  //这个不知道为什么显示不出来!!!有的说是windows不支持,我也不太清楚2015年1月3日13:51:44
{
  QStringList colorList = QColor::colorNames();   //得到所有的颜色序列
  QColor color = QColor(colorList[buttonComboBox->currentIndex()]);   //取得当前选中的序号,得到颜色

  QPalette p = contentFrame->palette();   //得到右边的调色板
  p.setColor(QPalette::Button, color);   //修改相应位置的颜色
  contentFrame->setPalette(p);     //把调色板的值给应用上去

  contentFrame->update();
}

//按钮上文字的显示
void Palette::ShowButtonText()
{
  QStringList colorList = QColor::colorNames();   //得到所有的颜色序列
  QColor color = QColor(colorList[buttonTextComboBox->currentIndex()]);   //取得当前选中的序号,得到颜色

  QPalette p = contentFrame->palette();   //得到右边的调色板
  p.setColor(QPalette::ButtonText, color);   //修改相应位置的颜色
  contentFrame->setPalette(p);     //把调色板的值给应用上去

//  contentFrame->update();
}

//文本框背景色的选择
void Palette::ShowBase()
{
  QStringList colorList = QColor::colorNames();   //得到所有的颜色序列
  QColor color = QColor(colorList[baseComboBox->currentIndex()]);   //取得当前选中的序号,得到颜色

  QPalette p = contentFrame->palette();   //得到右边的调色板
  p.setColor(QPalette::Base, color);   //修改相应位置的颜色
  contentFrame->setPalette(p);     //把调色板的值给应用上去

//  contentFrame->update();
}

//fillColorList用于插入颜色
void Palette::fillColorList(QComboBox *comboBox)
{
  QStringList colorList = QColor::colorNames();   //得到所有颜色名
  QString color;

  foreach(color, colorList)   //循环取出colorList里面的值
    {
      QPixmap pix(QSize(70, 20));   //这个pix作为显示颜色的图标
      pix.fill(QColor(color));    //为pix填充当前遍历到的颜色
      comboBox->addItem(QIcon(pix), NULL);    //把pix作为图标插入进去
      comboBox->setIconSize(QSize(70, 20));     //把选项设置成和pix一样的大小
      comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);     //设置下拉框的大小符合内容大小

    }

}

Palette::~Palette()
{

}

实现结果:

还有就是我发现上传东西还是有总空间限制的,就是说上传多了,空间大小就不够了,坑爹的是我居然只有60M,我也是呵呵了,这真是金贵,我还不如搞个网盘呢

时间: 2024-10-14 00:08:14

【Qt5开发及实例】11、QPalette调色板使用的相关文章

【Qt5开发及实例】32、实现键盘的监控操作

keyevent.h /** * 书本:[Qt5开发及实例] * 功能:实现键盘控制 * 文件:keyevent.h * 时间:2015年2月8日11:48:47 * 作者:cutter_point */ #ifndef KEYEVENT_H #define KEYEVENT_H #include <QWidget> #include <QKeyEvent> //键盘 #include <QPaintEvent> //绘画事件 #include <QPainter

【Qt5开发及实例】18、图形修饰小工具

图形修饰小工具 无力吐槽,这是我第三遍写这个了,到底是个什么意思???我只要一贴代码,浏览器直接崩溃,呵呵了,我也是,我现在只要写完一段字我就保存,尼玛在掉我就不写了,写到word里面,再贴上来. 效果 左边图形展示界面 paintarea.h /** * 书本:[Qt5开发及实例] * 功能:实现绘画各种图形 * 文件:paintarea.h * 时间:2015年1月21日16:59:25 * 作者:cutter_point */ #ifndef PAINTAREA_H #define PAI

【Qt5开发及实例】8、各种对话框!!

1.标准文件对话框 就是点击这个按钮就会打开文件的对话框 具体的实现是: 头文件dialog.h: #include <QDialog> #include <QLineEdit> #include <QGridLayout> //网格布局 #include <QPushButton> #include <iostream> #include "inputdlg.h" #include "msgboxdlg.h&quo

【Qt5开发及实例】9、一个QQ界面

这个程序主要是为了学习一下工具盒类,这里使用了3个工具盒然后添加到整个界面上, 分别是:好友(good friend), 陌生人(do not remember), 黑名单(black items) 哈哈,原谅我这不咋地的英语,懂我就好. 实现图: 代码: drawer.h /** * 书本:[Qt5开发及实例] * 功能:实现一个自己的QQ界面 * 文件:drawer.cpp * 时间:2015年1月2日11:01:12 * 作者:cutter_point */ #ifndef DRAWER_

【Qt5开发及实例】16、实现一个简单的文本编辑器(over)

实现一个简单的文本编辑器 其他具体的代码基础看前面:http://blog.csdn.net/cutter_point/article/details/42839071 1.功能 这个程序又添加了文本编辑功能,什么加粗,斜体,下划线,字体设置,字号设置,文字排版,段落对齐功能. 2.代码全展示 头文件 showwidget.h /** * 书本:[Qt5开发及实例] * 功能:实现一个简单的文本编辑器 * 文件:showwidget.h * 时间:2015年1月18日10:03:21 * 作者:

【Qt5开发及实例】24、数据柱形图显示

数据柱形图显示 1.我们首先把这个这个视图的表格部分表示出来 mainwindow.h /** * 书本:[Qt5开发及实例] * 功能:数据柱形图显示,这个类是表格显示 * 文件:mainwindow.h * 时间:2015年1月28日18:50:54 * 作者:cutter_point */ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QStandardItemModel>

【Qt5开发及实例】25、实现代理的功能

实现代理的功能 在Qt里面也有MVC,那就是视图,模型,代理,后面我们再开一章,好好来学习一下Qt的MVC吧! main.cpp /** * 书本:[Qt5开发及实例] * 功能:实现代理的功能 * 文件:main.cpp * 时间:2015年1月29日20:53:04 * 作者:cutter_point */ #include <QApplication> #include <QStandardItemModel> #include <QTableView> //#i

Qt5主窗体程序: 文本编辑器的实现(Qt5开发及实例)

下面的程序出自<Qt5开发及实例>陆文周. 效果图: 程序是一个文本编辑器的实例,主界面如下: 程序中的源文件和头文件: 源代码: 文件main.cpp的源代码: #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); QFont font("楷体",15); a.setFont

【Qt5开发及实例】27、获得文件的信息

fileinfo.h /** * 书本:[Qt5开发及实例] * 功能:获得文件的信息 * 文件:fileinfo.h * 时间:2015年2月4日17:23:38 * 作者:cutter_point */ #ifndef FILEINFO_H #define FILEINFO_H #include <QDialog> #include <QLabel> #include <QPushButton> #include <QLineEdit> #include