在 Qt 编程中,可以使用以下方法实现对话框程序在点击关闭按钮时隐藏,并在其父窗口销毁时跟着销毁:

  1. 使用'Qt::WA_DeleteOnClose'属性:在创建对话框时,使用'setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint)'设置对话框的窗口标志,然后使用'setAttribute(Qt::WA_DeleteOnClose, true)'设置对话框的属性。这样,在点击关闭按钮时,对话框将隐藏并在其父窗口销毁时自动销毁。
MyDialog *dialog = new MyDialog(parent); // 创建对话框
dialog->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); // 设置窗口标志
dialog->setAttribute(Qt::WA_DeleteOnClose, true); // 设置属性
dialog->show(); // 显示对话框
  1. 重写对话框的'closeEvent'事件处理函数:在对话框的类中重写'closeEvent'事件处理函数,在该函数中处理对话框的关闭事件。在关闭事件中,可以使用'hide()'隐藏对话框,并通过调用'deleteLater()'方法来延迟对话框的销毁,以确保对话框在其父窗口销毁后才被销毁。
void MyDialog::closeEvent(QCloseEvent *event) {
    hide(); // 隐藏对话框
    event->ignore(); // 忽略关闭事件

    // 延迟销毁对话框
    QTimer::singleShot(0, this, [this]() {
        deleteLater();
    });
}

通过以上两种方法,可以实现对话框在点击关闭按钮时隐藏,并在其父窗口销毁时跟着销毁。

标签: 常规


原文地址: https://gggwd.com/t/topic/bq8Y 著作权归作者所有。请勿转载和采集!