QT
QT
目录
QDialog
QDialog 模态和非模态对话框
头文件
#include <QDialog>
区别
- 模态对话框:不可用对其他窗口进行操作(对话框弹出时会阻塞)
- 非模块对话框:可以对其他窗口进行操作
使用【模态对话框】(单线程嘛)
QDialog dlg1(this); dlg1.exec();,exec(),表示接替了主窗口的消息循环。关闭时应该是回栈,把控制器还给主窗口
使用【非模块对话框】
QDialog dlg2(this); dlg2.show();,如果在函数,新窗口一闪而过、马上被释放而不可用QDialog * dlg2 = new QDialog(this); dlg2->show();,如果在函数,新窗口并没有被析构,会造成内存泄露QDialog * dlg2 = new QDialog(this); dlg2->show(); delete dlg2;,新窗口一闪而过、马上被释放而不可用QDialog * dlg2 = new QDialog(this); dlg2->show(); dlg2->setAttribute(Qt::WA_DeleteOnClose);最后一行代码的表示当关闭窗口时自动释放堆内存,否则应该是只析构(不相当于Vue中
<router-view>外包裹的<keep-alive>)setAttribute(Qt::WA_DeleteOnClose);也可以直接写在对话框的构造函数中
QMessageBox 信息对话框
头文件
#include <QMessageBox>
使用
错误对话框:
QMessageBox::critical(this, "ErrorTitle", "错误信息");信息对话框:
QMessageBox::information(this, "InfoTitle", "信息");警告对话框:
QMessageBox::warning(this, "WarningTitle", "警告信息");提问对话框:
QMessageBox::question(this, "QuesTitle", "提问信息", QMessageBox::Save|QMessageBox::Cancel);(第四个参数默认是选Yes和No)返回枚举型,可用于比较
其他标准对话框
分类
Qt的内置对话框大致分以下几类(都是QDialog的后代)
| 对话框 | 说明 |
|---|---|
| QColorDialog | 选择颜色 |
| QFileDialog | 选择文件或目录(详见文件交互一章) |
| QFontDialog | 选择字体 |
| QInputDialog | 允许用户输入一个值,并将值返回 |
| QMessageBox | 模态对话框,显示信息、询问等 |
| QPageSetupDialog | 为打印机提供纸张相关的选项 |
| QPrintDialog | 打印机配置(详见绘图一章) |
| QPrintPreviewDialog | 打印预览 |
| QProgressDialog | 显示操作过程 |
使用
| 类名 | 使用示例 |
|---|---|
QColorDialog | QColor color = QColorDialog::getColor(QColor(255,0,0)); |
QFileDialog | QString str = QFileDialog::getOpenFileName(this, "OpenFile", "默认路径", "(*.txt)"); |
QFontDialog | QFont font = QFontDialog::getFont(&布尔变量, QFont("黑体",16)); |
补充
QColor属性:color.red()、color.green()、color.blue()QFont属性:font.family().toUtf8().data()、font.pointSize()、font.bold()、font.italic()