参考《Qt5开发及实例》(第4版)P81
第1步:建立页面项目,项目名“DialogExample”,基类“Dialog”,类名Dialog,取消创建界面
第2步:Dialog.h
#ifndef DIALOG_H #define DIALOG_H #include#include #include class Dialog : public QDialog { Q_OBJECT public: Dialog(QWidget *parent = nullptr); ~Dialog(); private: QPushButton *fileBtn; QLineEdit *fileLineEdit; QGridLayout *mainLayout; //标准颜色对话框使用 QPushButton *colorBtn; QFrame *colorFrame; //------------字体对话框--------- QPushButton *fontBtn; QLineEdit *fontQLineEdit; private slots: void showFile(); //槽函数,显示文件名 void showColor(); //显示颜色 void showFont(); //显示颜色 }; #endif // DIALOG_H
第3步:Dialog.cpp
#include "dialog.h" #include#include #include #include #include #include Dialog::Dialog(QWidget *parent) : QDialog(parent) { setWindowTitle(tr("各种标准对话框的实例")); //----------文件对话框---------------- fileBtn = new QPushButton; //按钮对象初始化 fileBtn->setText("文件标准对话框实例"); fileLineEdit = new QLineEdit; //文本框 //添加布局管理 mainLayout = new QGridLayout(this); //布局设计,网格化布局 mainLayout->addWidget(fileBtn,0,0); mainLayout->addWidget(fileLineEdit,0,1); //添加事件关联 connect(fileBtn, SIGNAL(clicked()), this, SLOT(showFile())); //单击fileBtn后,调用showFile()函数 //------------颜色对话框--------- colorBtn = new QPushButton; //生成颜色按钮 colorBtn->setText(tr("颜色标准对话框实例")); colorFrame = new QFrame; colorFrame->setFrameShape(QFrame::Box); colorFrame->setAutoFillBackground(true); mainLayout->addWidget(colorBtn,1,0); mainLayout->addWidget(colorFrame,1,1); //添加事件关联 connect(colorBtn, SIGNAL(clicked()), this, SLOT(showColor())); //------------字体对话框--------- fontBtn = new QPushButton; //字体按钮 fontBtn->setText(tr("字体标准对话框实例")); fontQLineEdit = new QLineEdit; //显示更改的字符串 fontQLineEdit->setText("welcome!"); mainLayout->addWidget(fontBtn,2,0); mainLayout->addWidget(fontQLineEdit,2,1); //添加事件关联 connect(fontBtn, SIGNAL(clicked()), this, SLOT(showFont())); } Dialog::~Dialog() { } void Dialog::showFile() //槽函数 { // QString s = QFileDialog::getOpenFileName(this,"open file dialog","/","c++file(*.cpp);;C files(*.c);;Head file(*.h)"); 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; QFont f = QFontDialog::getFont(&ok); if(ok) { fontQLineEdit->setFont(f); } }
运行结果:



