QT:我应该手动断开插槽吗?如果是,我该如何断开特定的广告位?

时间:2018-05-21 01:36:04

标签: c++ qt signals slots

我在B级有一个插槽,它将连接到A级信号,但是B级将被不同地解构,所以在B级解构时,我应该断开插槽还是通过QT断开连接?如果我应该手动断开连接,我该怎么办?

3 个答案:

答案 0 :(得分:0)

您可以捕获信号void QObject::destroyed(QObject * obj = 0)进行清理:

  

此信号在对象obj之前发出   被毁坏了,无法阻挡。

     

此信号后,所有物体的儿童都会立即被摧毁   被发射出来。

回答:

  

我应该断开插槽还是通过QT断开连接?如果我   应手动断开连接,我该怎么办?

当涉及的任何一个对象被破坏时,信号槽连接被删除。

答案 1 :(得分:0)

Qt负责断开连接。你不必担心它。

但建议使用

obj->deleteLater();

方法而不是

delete obj;

Same Question Exists

答案 2 :(得分:0)

如果你没有使用线程,你可以在这里断开另一个类槽,如下面的代码:  您将在A类的构造函数内调用,而不是在构造函数

之外
bttnShutdown = new QPushButton(this);
bttnShutdown->setGeometry(290, 2, 25, 26);
myWorker =new B;
connect(bttnShutdown, SIGNAL(clicked()), myWorker, SLOT(dowork()));