小部件关闭后 Qt 发出信号

Posted

技术标签:

【中文标题】小部件关闭后 Qt 发出信号【英文标题】:Qt emit signal after widget is closed 【发布时间】:2020-07-20 08:06:22 【问题描述】:

我有一个子 QDialog,当从它按下按钮时,会从 QtConcurrent 打开一个套接字,如果出现错误,则会显示一个警告对话框。 但是如果用户关闭子 QDialog 以返回主窗口,则子 QDialog 插槽无法接收到信号。 我试图将信号广播到 parentWidget,但程序崩溃了,因为 this->parentWidget() 不再存在。 我使用此代码发出信号并将其连接到插槽

connect(this, SIGNAL(errorTcpSignal(QString)), this, SLOT(displayTcpError(QString)));

 connect(&t, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error),[=](QAbstractSocket::SocketError err)
        emit errorTcpSignal("Error while changing game settings \n" + QVariant::fromValue(err).toString());
    );

有没有办法解决这个问题? 非常感谢。

【问题讨论】:

【参考方案1】:

已解决: 从子小部件发出信号,但从父小部件设置连接。

【讨论】:

以上是关于小部件关闭后 Qt 发出信号的主要内容,如果未能解决你的问题,请参考以下文章

Qt小部件析构函数通过连接信号间接调用小部件方法,并崩溃

如何关闭在提升的小部件中单击的按钮上的 qt 小部件 ui?

如何避免鼠标单击一个小部件触发 Qt 中其他小部件的信号?

Qt:动态小部件信号和槽连接

如何隐藏在 qt 中生成信号的小部件

QT:如何关闭同一个小部件的多个窗口?