新建一個基於對話框的工程,取消界面選項。函數
頭文件以下:this
#ifndef DIALOG_H #define DIALOG_H #include <QDialog> #include <QFrame> #include <QGridLayout> class Dialog : public QDialog { Q_OBJECT public: Dialog(QWidget *parent = 0); ~Dialog(); private: QPushButton *colorbtn; QFrame *colorFrame; QGridLayout *mainlayout; public slots: void showcolors(); }; #endif // DIALOG_H
.cpp文件以下:spa
#include "dialog.h" #include <QColor> #include <QColorDialog> #include <QPushButton> Dialog::Dialog(QWidget *parent) : QDialog(parent) { colorbtn=new QPushButton; colorbtn->setText("顏色選擇按鈕"); colorFrame =new QFrame; colorFrame->setFrameShape(QFrame::Box); colorFrame->setAutoFillBackground(true); mainlayout=new QGridLayout(this); mainlayout->addWidget(colorbtn,1,0); mainlayout->addWidget(colorFrame,1,1); connect(colorbtn,SIGNAL(clicked(bool)),SLOT(showcolors())); } void Dialog::showcolors() { QColor c=QColorDialog::getColor(Qt::blue); if(c.isValid()) { colorFrame->setPalette(QPalette(c)); } } Dialog::~Dialog() { }
運行後的效果:code
固然,實際上不改變窗口大小是看不到frame窗口的,因此再main函數中用了setGeometry()函數來調整窗口的大小。
get