您的位置 首页 > 腾讯云社区

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

模态对话框

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

int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); QDialog dialog; dialog.exec(); }

效果如下所示:

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

非模态对话框

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

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

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

---来自腾讯云社区的---zy010101

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: