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


    一、模态对话框

    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函数来设置可以在关闭它的时候释放内存。

    参考:Qt模态对话框和非模态对话框

    作者:yusq77

    -------------------------------------------

    Wish you all the best and good health in 2021.

  • 相关阅读:
    C#开发模式——单例模式
    C#开发模式——单例模式
    Memcached的基础梳理
    Memcached的基础梳理
    Memcached的基础梳理
    Memcached的基础梳理
    13条只有程序员才能懂的内涵段子
    13条只有程序员才能懂的内涵段子
    网页性能优化
    webpack中使用ECharts
  • 原文地址:https://www.cnblogs.com/yusq77/p/13899352.html
Copyright © 2020-2023  润新知