【Qt】QDialog对话框

本文详细介绍了QtGUI编程中对话框的分类,包括模态对话框(如QDialog)、非模态对话框(QDialogwithWA_DeleteOnClose)和混合属性对话框,以及QMessageBox、QColorDialog、QFileDialog和QFontDialog等内置对话框的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、概念

二、对话框的分类

2.1 模态对话框

2.2 非模态对话框

2.3 混合属性对话框

三、消息对话框QMessageBox

四、颜色对话框QColorDialog

五、文件对话框QFileDialog

六、字体对话框QFontDialog

七、输入对话框QInputDialog


一、概念

对话框是GUI程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。Qt常用的内置对话框有:QFiledialog(文件对话框)、QColorDialog(颜色对话框)、QFontDialog(字体对话框)、QInputDialog(输入对话框)和QMessageBox(消息框)

二、对话框的分类

2.1 模态对话框

模态对话框指的是:显示后无法与父窗口进行交互,是一种阻塞式的对话框。使用QDialog::exec()函数调用。模态对话框使用于必须依赖用户选择的场合,如消息显示、文件选择,打印设置等

代码示例

在菜单项中,点击菜单项时就会触发triggered()信号

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

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

    QMenuBar* menubar = menuBar();
    this->setMenuBar(menubar);

    QMenu* menu1 = new QMenu("文件");
    QMenu* menu2 = new QMenu("编辑");
    menubar->addMenu(menu1);
    menubar->addMenu(menu2);

    QAction* action = new QAction("新建");
    menu1->addAction(action);

    QToolBar* toolbar = new QToolBar(this);
    this->addToolBar(toolbar);
    toolbar->addAction(action);
    
    //当点击新建时,弹出一个模态对话框
    connect(action, &QAction::triggered, [=](){
        QDialog dialog;
        dialog.resize(300, 200);
        dialog.exec();
    });
}

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

2.2 非模态对话框

非模态对话框显示后独立存在,可以同时与父窗口进行交互,是一种非阻塞式对话框,使用QDialog::show()函数调用

非模态对话框一般在堆上创建,若创建在栈上,弹出的非模态对话框就会一闪而过。

需设置Qt:WA_DeleteOnClose属性,目的是:当创建多个非模态对话框时(如打开了多个非模态窗口),为了避免内存泄漏要设置此属性

非模态对话框适用于特殊功能设置的场合,如查找操作,属性设置等

//当点击新建时,弹出一个模态对话框
connect(action, &QAction::triggered, [=](){
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GG_Bond21

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值