跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Qt笔记9_QDialog(对话框)

一. 模态对话框 1.1 了解模态对话框 模态对话框是指在它显示期间,它会阻止用户与程序中其他窗口进行交互的对话框。

用户必须先关闭模态对话框,才能继续操作其他窗口。

模态对话框可以通过以下几种方式实现: 应用程序模态 (Application Modal):这种模态对话框会阻塞整个应用程序的所有窗口。

使用

QDialog::exec()

方法来显示应用程序模态对话框。

窗口模态 (Window Modal):这种模态对话框只阻塞与它关联的窗口。

使用

QDialog::exec()

方法并在构造函数中指定父窗口来显示窗口模态对话框。

1.2 创建一个模态窗口 第一步,按照以前学习的方式创建一个新的项目。

注意,此次代码在 .cpp 中编译

#include "mainwindow.h"

#include "ui_mainwindow.h" #include #include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this);

//点击新建按钮,弹出一个对话框 connect(ui->actionnew,&QAction::triggered,[=](){ //模态创建 QDialog dlg(this); dlg.resize(300,300); dlg.exec(); qDebug() << "模态对话框"; }); }

MainWindow::~MainWindow() { delete ui; }

运行结果:点击QDialog意外的地方,系统将会有警告。

二. 非模态对话框 1.1 了解非模态对话框 创建非模态对话框与模态对话框类似,但它们的行为有所不同。

非模态对话框在显示时不会阻塞程序的执行,允许用户与对话框以及其他窗口进行交互。

以下是创建和显示非模态对话框的步骤: 创建对话框对象,但不调用

exec()

方法。

使用

show()

方法显示对话框。

程序继续执行,无需等待对话框关闭。

2.2 创建一个非模态对话框

#include "mainwindow.h"

#include "ui_mainwindow.h" #include #include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this);

//点击新建按钮,弹出一个对话框 connect(ui->actionnew,&QAction::triggered,[=](){ //非模态创建 QDialog *dlg2 = new QDialog (this); dlg2->resize(300,300); //固定打开大小 dlg2->show(); //以顶层显示 dlg2->setAttribute(Qt::WA_DeleteOnClose);//55号,属性 qDebug() << "非模态对话框 "; }); }

MainWindow::~MainWindow() { delete ui; }

运行结果:此时可以点击窗口以外

三. 消息对话框 3.1 错误对话框

#include "mainwindow.h"

#include "ui_mainwindow.h" #include #include #include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this);

//点击新建按钮,弹出一个对话框 connect(ui->actionnew,&QAction::triggered,[=](){ //错误对话框 QMessageBox::critical(this,"critical","错误"); }); }

MainWindow::~MainWindow() { delete ui; }

运行结果:

3.2 信息对话框

#include "mainwindow.h"

#include "ui_mainwindow.h" #include #include #include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this);

//点击新建按钮,弹出一个对话框 connect(ui->actionnew,&QAction::triggered,[=](){ //信息对话框 QMessageBox::information(this,"info","信息"); }); }

MainWindow::~MainWindow() { delete ui; }

运行结果:

3.3 警告对话框

#include "mainwindow.h"

#include "ui_mainwindow.h" #include #include #include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this);

//点击新建按钮,弹出一个对话框 connect(ui->actionnew,&QAction::triggered,[=](){ //警告对话框 QMessageBox::warning(this,"waring","警告"); }); }

MainWindow::~MainWindow() { delete ui; }

运行结果:

四. 提问对话框

#include "mainwindow.h"

#include "ui_mainwindow.h" #include #include #include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this);

//点击新建按钮,弹出一个对话框 connect(ui->actionnew,&QAction::triggered,[=](){ //参数1:父亲,参数2:标题,参数3:提示内容,参数4:按键类型,参数5:默认关联回车按键 if (QMessageBox::Save == QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel)) { qDebug() << "选择保持"; } else { qDebug() << "选择取消"; }

}); }

MainWindow::~MainWindow() { delete ui; }

运行结果:

五. 颜色的对话框

#include "mainwindow.h"

#include "ui_mainwindow.h" #include #include #include #include #include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this);

//点击新建按钮,弹出一个对话框 connect(ui->actionnew,&QAction::triggered,[=](){ //颜色的对话框 QColor color = QColorDialog::getColor(QColor(255,0,0)); qDebug() << "r = " << color.red() << "q = " < #include "ui_mainwindow.h" #include #include #include #include #include #include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this);

//点击新建按钮,弹出一个对话框 connect(ui->actionnew,&QAction::triggered,[=](){ //文件对话框 //参数1:父亲 , 参数2:标题 , 参数3:默认打开路径 , 参数4:过滤文件格式 //返回值是 选取的路径 QString str = QFileDialog::getOpenFileName(this,"打开文件","D:\\word\\学习\\作业集\\大创\\大创期末作业","(*.docx)"); qDebug() << str; }); }

MainWindow::~MainWindow() { delete ui; }

运行结果:

七. 字体对话框

#include "mainwindow.h"

#include "ui_mainwindow.h" #include #include #include #include #include #include #include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this);

//点击新建按钮,弹出一个对话框 connect(ui->actionnew,&QAction::triggered,[=](){ //字体对话框 bool flag; QFont font = QFontDialog::getFont(&flag,QFont("隶书",36));//它需要一个bool值->flag,后面这个是默认打开的flag,也可以不设置 qDebug() << "字体"<

}

MainWindow::~MainWindow() { delete ui; }

运行结果:

有时候得看电脑配置,有时候电脑配置是没有加粗和倾斜的。

八. 总的全部代码

#include "mainwindow.h"

#include "ui_mainwindow.h" #include #include #include #include #include #include #include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this);

//点击新建按钮,弹出一个对话框 connect(ui->actionnew,&QAction::triggered,[=](){

//模态创建 // QDialog dlg(this); // dlg.resize(300,300); // dlg.exec(); // qDebug() << "模态对话框";

//非模态对话框 // QDialog *dlg2 = new QDialog (this); // dlg2->resize(300,300); // dlg2->show(); // dlg2->setAttribute(Qt::WA_DeleteOnClose);//55号,属性 // qDebug() << "非模态对话框 ";

//消息对话框(系统提供的对话框) //错误对话框 // QMessageBox::critical(this,"critical","错误");

// 信息对话框 // QMessageBox::information(this,"info","信息");

//警告对话框 // QMessageBox::warning(this,"waring","警告");

//提问对话框 //参数1:父亲,参数2:标题,参数3:提示内容,参数4:按键类型,参数5:默认关联回车按键 // if (QMessageBox::Save == QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel)) // { // qDebug() << "选择保持"; // } // else // { // qDebug() << "选择取消"; // }

//其他标准对话框 //颜色的对话框 // QColor color = QColorDialog::getColor(QColor(255,0,0)); // qDebug() << "r = " << color.red() << "q = " <

//字体对话框 bool flag; QFont font = QFontDialog::getFont(&flag,QFont("隶书",36));//它需要一个bool值->flag,后面这个是默认打开的flag,也可以不设置 qDebug() << "字体"<

}

MainWindow::~MainWindow() { delete ui; }

相关文章