跳至主要內容

QT

LincZero大约 2 分钟

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显示操作过程

使用

类名使用示例
QColorDialogQColor color = QColorDialog::getColor(QColor(255,0,0));
QFileDialogQString str = QFileDialog::getOpenFileName(this, "OpenFile", "默认路径", "(*.txt)");
QFontDialogQFont font = QFontDialog::getFont(&布尔变量, QFont("黑体",16));

补充

  • QColor属性:color.red()color.green()color.blue()
  • QFont属性:font.family().toUtf8().data()font.pointSize()font.bold()font.italic()

自定义信息框