1. 程式人生 > >自學QT之顏色選擇對話方塊

自學QT之顏色選擇對話方塊

新建一個基於對話方塊的工程,取消介面選項。

標頭檔案如下:

#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檔案如下:
#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()
{

}

執行後的效果:

當然,實際上不改變視窗大小是看不到frame視窗的,所以再main函式中用了setGeometry()函式來調整視窗的大小。