关闭Qt窗口时发出的信号是什么?

8

我有一个主窗口打开了第二个窗口。

当我在第二个窗口中点击按钮时,会启动一个线程,我希望当我关闭第二个窗口时,我的线程会结束。

当我的第二个窗口关闭时,会发出什么信号?

感谢您未来的回答。


你的第二个窗口可以是一个QDialog,你可以使用accepted()finished(int result)rejected()信号将你的MainWindow连接到第二个QDialog窗口。 - thibsc
1个回答

14

当小部件(包括QMainWindow)关闭时,不会发出信号。如果一个小部件设置为在关闭时被删除,那么您可以使用以下QObject信号来检测小部件即将被销毁...

void    destroyed(QObject *obj = Q_NULLPTR)

然而,这仅在启用了Qt :: WA_DeleteOnClose标志的情况下才能工作(默认情况下未启用)。

或者,您可以实现标准小部件关闭事件并发出自己的信号来指示窗口已关闭,这可能更可取:

void MainWindow::closeEvent( QCloseEvent* event )
{
    emit MySignalToIndicateThatTheWindowIsClosing();
    event->accept();
}

2
Qt默认不会发出这种类型的信号,这让我想知道手动实现它是否是不好的做法。对我来说,这似乎是基本功能。 - renardesque

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接