QTimer timeout()方法不再在代码重组后启动

QTimer timeout() method no longer firing after code restructure

本文关键字:代码 重组 启动 不再 timeout 方法 QTimer      更新时间:2023-10-16

我最近对我的一些代码进行了重新格式化,以使其更可读。我在MainWindow课程中有代码来处理触摸事件。这些功能包括Pinchzoom功能,它在我的更改之前起作用。我将代码转移到了Qobject的单例类中。

检测到pinchzoom时,相关的小部件(由qapplication :: widgetat(((调用其pinchzoom((方法,该方法停止,然后重新启动单杆qTimer。QTimer的timeout()方法连接到一个实现实际缩放和更新视图的插槽。因此,我可以在实际的Pinch-Zoom手势和视图更新之间添加一个延迟。

在移动我的代码之前,此timeout()信号工作正常,并且触发了缩放方法。但是,尽管没有触摸信号/插槽连接,但timeout()方法触发的缩放插槽不再被调用。timeout()信号与插槽之间的实际连接是在计时器寿命的小部件的构造函数中完成的。

我已经检查过,并且信号/插槽连接返回真实,因此连接在那里。

是否有某种原因会发生这种情况?它与现在在单顿类中而不是MainWindow类中发生的QTIMER发生的事实有关吗?

似乎问题是我的Singleton类位于单独的线程上,并且无法从单独的线程触发QTimer。我刚刚在原始MainWindow类中设置了一个插槽,以接受Singleton类的信号,然后调用Pinch Zoom方法。现在正常工作。