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()