当删除一个类时,Qt中的信号是否自动断开

当删除一个类时,Qt中的信号是否自动断开,qt,destructor,qt-signals,Qt,Destructor,Qt Signals,删除一个侧面时,Qt是否会自动删除对象之间的连接 e、 g连接(A..,B..),当A(指针)被删除或B被删除时,连接是否会断开 是否有必要在析构函数中显式使用disconnect?是的,析构函数负责: 自动断开与对象之间的所有信号连接,并从事件队列中删除该对象的任何挂起的已发布事件。 但是,使用QObject子类通常比直接删除QObject子类更安全 不过要小心: 警告:在挂起事件等待传递时删除QObject可能会导致崩溃。如果QObject存在于与当前执行的线程不同的线程中,则不能直接删除该

删除一个侧面时,Qt是否会自动删除对象之间的连接

e、 g
连接(A..,B..)
,当A(指针)被删除或B被删除时,连接是否会断开

是否有必要在析构函数中显式使用disconnect?

是的,析构函数负责:

自动断开与对象之间的所有信号连接,并从事件队列中删除该对象的任何挂起的已发布事件。
但是,使用QObject子类通常比直接删除QObject子类更安全

不过要小心:

警告:在挂起事件等待传递时删除QObject可能会导致崩溃。如果QObject存在于与当前执行的线程不同的线程中,则不能直接删除该QObject。改为使用deleteLater(),这将导致事件循环在所有挂起事件传递给对象后删除该对象


还请注意:“警告:在挂起事件等待传递时删除QoObject可能会导致崩溃。”如果可能发生这种情况,请使用。另外,请小心删除对象中的lambda(如果使用任何lambda):它们不会断开连接。。。猜猜我怎么知道;)Qt5也是如此。@mBardos因为Qt5.2有一个重载,它接受一个上下文对象。删除上下文对象时,与lambda的连接将被断开。@RegularlyScheduledProgramming我仍然在5.1.1上,但我可以说一件事:它是必需的!;)