前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt模态对话框和非模态对话框

Qt模态对话框和非模态对话框

作者头像
zy010101
发布2020-04-10 12:00:54
3.3K0
发布2020-04-10 12:00:54
举报
文章被收录于专栏:程序员程序员

模态对话框

Qt 中使用QDialog类实现对话框。我们的对话框通常继承自QDialog。对话框分为模态对话框和非模态对话框。所谓模态对话框,就是会阻塞同一应用程序中其它窗口的输入。Qt使用QDialog::exec()来实现模态对话框。如下所示:

代码语言:javascript
复制
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    QDialog dialog;
    dialog.exec();
}

效果如下所示:

如果不关闭Dialog窗口,那么就无法操作下面的MainWindow窗口。这就是模态对话框。

非模态对话框

非模态对话框就是在打开它的时候,我们仍旧能够操作其它的窗口。Qt使用QDialog::show()来创建非模态对话框。

代码语言:javascript
复制
    QDialog *dialog = new QDialog;
    dialog->show();
    dialog->setAttribute(Qt::WA_DeleteOnClose);        //在关闭窗口的时候释放内存

非模态对话框,如果我们创建在栈上,那么它会一闪而过(除非它是全局的或者静态的)。因此我们将它创建在堆上,即使这样我们也不能去释放它,否则他也是一闪而过。那么随着每次操作都会有内存泄漏。为了避免这一点,Qt提供了一个setAttribute函数来设置可以在关闭它的时候释放内存。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模态对话框
  • 非模态对话框
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档