我做的这个不知道为什么有两个功能无法显示,也没有报错,我暂时是想不出什么好办法= =
/** * 书本:【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
/** * 书本:【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,我也是呵呵了,这真是金贵,我还不如搞个网盘呢
原文地址:http://blog.csdn.net/cutter_point/article/details/42361885