本文主要是介绍(QT学习笔记):对话框QDialog、标准对话框,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 【说明】:参考视频 https://www.bilibili.com/video/BV1g4411H78N?from=search&seid=6291131983490103239
目录
对话框QDialog
标准对话框
QMessageBox
颜色对话框
文件对话框
字体对话框
对话框QDialog
- 很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。
- 对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。
- Qt 中使用QDialog类实现对话框。就像主窗口一样,我们通常会设计一个类继承QDialog。
- QDialog(及其子类,以及所有Qt::Dialog类型的类)的对于其 parent 指针都有额外的解释:
- 如果 parent 为 NULL,则该对话框会作为一个顶层窗口,否则则作为其父组件的子对话框(此时,其默认出现的位置是 parent 的中心)。
- 顶层窗口与非顶层窗口的区别在于,顶层窗口在任务栏会有自己的位置,而非顶层窗口则会共享其父组件的位置。
- 对话框分为模态对话框和非模态对话框。
- 模态对话框:不可以对其他窗口进行操作。
- 非模态对话框 :可以对其他窗口进行操作。
- 对话框头文件 QDialog
- 模态与非模态的实现:
- 使用QDialog::exec()实现应用程序级别的模态对话框
- 使用QDialog::open()实现窗口级别的模态对话框
- 使用QDialog::show()实现非模态对话框。
【模态对话框示例:点击新建,打开对话框】
- 在mainwindow.cpp的构造函数中的ui下面加入如下代码:
connect(ui->actionNew, &QAction::triggered, [this](){ //模态对话框 QDialog dlg(this); dlg.resize(180,60); dlg.exec(); });
【非模态对话框示例:点击新建,打开对话框】
- 得创建在堆上,如果在栈上就一闪而过。
connect(ui->actionNew, &QAction::triggered, [this](){ //非模态对话框 QDialog* dlg =new QDialog(this); dlg->resize(180,60); dlg->show(); dlg->setAttribute(Qt::WA_DeleteOnClose); });
- 设置属性,关闭对话框,则释放对应内存。
标准对话框
- 所谓标准对话框,是 Qt 内置的一系列对话框,用于简化开发。
- 事实上,有很多对话框都是通用的,比如打开文件、设置颜色、打印设置等。
- 这些对话框在所有程序中几乎相同,因此没有必要在每一个程序中都自己实现这么一个对话框。
- Qt 的内置对话框大致分为以下几类:
- QColorDialog: 选择颜色;
- QFileDialog: 选择文件或者目录;
- QFontDialog: 选择字体;
- QInputDialog: 允许用户输入一个值,并将其值返回;
- QMessageBox: 模态对话框,用于显示信息、询问问题等;
- QPageSetupDialog:为打印机提供纸张相关的选项;
- QPrintDialog: 打印机配置;
- QPrintPreviewDialog:打印预览;
- QProgressDialog: 显示操作过程。
QMessageBox
- 引入头文件:QMessageBox
【错误提示对话框】
【信息提示对话框】
【询问提示对话框】
- 参数1 父窗口 参数2 标题 参数3 提示信息 参数4 按键类型 参数5 默认关联回车按键
- 拓展:判断点击不同的按钮,进行不同的后续操作
connect(ui->actionNew, &QAction::triggered, [this](){ //询问提示对话框 if(QMessageBox::Save == QMessageBox::question(this,"询问","question",\ QMessageBox::Cancel|QMessageBox::Save,\QMessageBox::Cancel)) { qDebug() << "点击的是保存"; } else { qDebug() << "点击的是取消"; } });
【警告提示对话框】
颜色对话框
#include <QColorDialog>
文件对话框
- #include <QFileDialog>
connect(ui->actionNew, &QAction::triggered,this, [=](){ //文件对话框 QString fileName = QFileDialog::getOpenFileName(this, "打开文件", "E:\\git\\code","(*.doc)"); qDebug() << fileName ; });
字体对话框
- #include <QFontDialog>
bool flag; QFont font = QFontDialog::getFont(&flag, QFont("华文彩云",36)); qDebug() << "字体" << font.family().toUtf8().data() << "字号"<< font.pointSize() << "是否加粗"<<font.bold() << "是否倾斜" << font.italic();
这篇关于(QT学习笔记):对话框QDialog、标准对话框的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!