Qt5建立標準字型對話方塊(QFontDialog類)
阿新 • • 發佈:2018-11-07
接續上節:https://blog.csdn.net/xunye_dream/article/details/83003316
標頭檔案:
#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 createFontDialog(); void addGridLayout(); void registerConnect(); private slots: void showFile(); void showColor(); void showFont(); private: //file dialog QPushButton *fileBtn; QLineEdit *fileLineEdit; //color dialog QPushButton *colorBtn; QFrame *colorFrame; //font dialog QPushButton *fontBtn; QLineEdit *fontLineEdit; // layout QGridLayout *mainLayout; }; #endif // DIALOG_H
原始檔:
#include "dialog.h" #include <QPushButton> #include <QLineEdit> #include <QGridLayout> #include <QFileDialog> #include <QFrame> #include <QColorDialog> #include <QPalette> #include <QFontDialog> Dialog::Dialog(QWidget *parent) : QDialog(parent) { setWindowTitle(tr("各種標準對話方塊的例項")); createFileDialog(); createColorDialog(); createFontDialog(); 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::createFontDialog() { fontBtn = new QPushButton; fontBtn->setText(tr("字型標準對話方塊例項")); fontLineEdit = new QLineEdit; fontLineEdit->setText(tr("Welcome!")); } 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); mainLayout->addWidget(fontBtn, 2, 0); mainLayout->addWidget(fontLineEdit, 2, 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::showFont() { bool ok = true; QFont f = QFontDialog::getFont(&ok); if (ok) { fontLineEdit->setFont(f); } } void Dialog::registerConnect() { connect(fileBtn, SIGNAL(clicked()), this, SLOT(showFile())); connect(colorBtn, SIGNAL(clicked()), this, SLOT(showColor())); connect(fontBtn, SIGNAL(clicked()), this, SLOT(showFont())); } Dialog::~Dialog() { if (fileBtn) delete fileBtn; if (fileLineEdit) delete fileLineEdit; if (colorBtn) delete colorBtn; if (colorFrame) delete colorFrame; if (fontBtn) delete fontBtn; if (fontLineEdit) delete fontLineEdit; if (mainLayout) delete mainLayout; }
顯示結果:
點選字型標準對話方塊例項按鈕,顯示結果: