QT建立顏色對話方塊
阿新 • • 發佈:2018-11-07
接續上節https://blog.csdn.net/xunye_dream/article/details/83002991
標頭檔案:
#ifndef DIALOG_H #define DIALOG_H #include <QDialog> class QPushButton; class QLineEdit; class QGridLayout; class QFrame; class Dialog : public QDialog { Q_OBJECT public: Dialog(QWidget *parent = 0); ~Dialog(); private: void createFileDialog(); void createColorDialog(); void addGridLayout(); void registerConnect(); private slots: void showFile(); void showColor(); private: //file dialog QPushButton *fileBtn; QLineEdit *fileLineEdit; //color dialog QPushButton *colorBtn; QFrame *colorFrame; // layout QGridLayout *mainLayout; }; #endif // DIALOG_H
原始檔:
#include "dialog.h" #include <QPushButton> #include <QLineEdit> #include <QGridLayout> #include <QFileDialog> #include <QFrame> #include <QColorDialog> #include <QPalette> Dialog::Dialog(QWidget *parent) : QDialog(parent) { setWindowTitle(tr("各種標準對話方塊的例項")); createFileDialog(); createColorDialog(); addGridLayout(); registerConnect(); } void Dialog::createFileDialog() { fileBtn = new QPushButton; fileBtn->setText(tr("文字標準對話方塊例項")); fileLineEdit = new QLineEdit; } void Dialog::createColorDialog() { colorBtn = new QPushButton; colorBtn->setText(tr("顏色標準對話方塊例項")); colorFrame = new QFrame; colorFrame->setFrameShape(QFrame::Box); colorFrame->setAutoFillBackground(true); } void Dialog::addGridLayout() { mainLayout = new QGridLayout(this); mainLayout->addWidget(fileBtn, 0, 0); mainLayout->addWidget(fileLineEdit, 0, 1); mainLayout->addWidget(colorBtn, 1, 0); mainLayout->addWidget(colorFrame, 1, 1); } void Dialog::showFile() { QString s = QFileDialog::getOpenFileName(this, "open file dialog", "/", "C++ files(*.cpp)::C files(*.c)::Head files(*.h)"); fileLineEdit->setText(s); } void Dialog::showColor() { QColor c = QColorDialog::getColor(Qt::blue); if (c.isValid()) { colorFrame->setPalette(QPalette(c)); } } void Dialog::registerConnect() { connect(fileBtn, SIGNAL(clicked()), this, SLOT(showFile())); connect(colorBtn, SIGNAL(clicked()), this, SLOT(showColor())); } Dialog::~Dialog() { if (fileBtn) delete fileBtn; if (fileLineEdit) delete fileLineEdit; if (colorBtn) delete colorBtn; if (colorFrame) delete colorFrame; if (mainLayout) delete mainLayout; }
顯示結果:
點選顏色Button,顯示結果: