gpt4 book ai didi

c++ - QTimer::SingleShot 在删除对象后触发

转载 作者:太空狗 更新时间:2023-10-29 19:57:19 33 4
gpt4 key购买 nike

// Example class
class A : public QObject
{
Q_OBJECT
void fun() {
Timer::SingleShot(10, timerSlot); //rough code
}
public slot:
void timerSlot();
}

auto a = SharedPointer<A>(new A);
a->fun();
a->reset(); // a deleted

在这种情况下,删除 a 并触发计时器后,它会执行 timerSlot() 吗?我遇到了一次极其罕见的崩溃,不确定是不是因为这个逻辑中有可疑之处。

最佳答案

即使计时器触发,也不会触发插槽。 ~QObject 状态的文档:All signals to and from the object are automatically disconnected, and any pending posted events for the object are removed from the event queue.您可以同时触发 A::timerSlot 和删除 A 的唯一方法是使用线程。

关于c++ - QTimer::SingleShot 在删除对象后触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37871755/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com