繁体   English   中英

代码重组后不再触发QTimer timeout()方法

[英]QTimer timeout() method no longer firing after code restructure

我最近重新格式化了一些代码,使其更具可读性。 我在MainWindow类中有代码可以处理触摸事件。 在这些功能中,有一个pinchZoom功能,该功能在我进行更改之前就可以使用。 我将代码移到了一个单例类(即QObject)上。

当检测到pinchZoom时,相关的小部件(由QApplication :: widgetAt()找到)调用其pinchZoom()方法,该方法将停止然后重新启动单次QTimer。 QTimer的timeout()方法连接到一个插槽,该插槽可以实际缩放和更新视图。 因此,我可以在实际的捏缩放手势和视图更新之间添加延迟。

在移动代码之前,此timeout()信号工作得很好,并且触发了zoom方法。 但是,尽管未触及信号/插槽连接,但不再调用由timeout()方法触发的缩放插槽。 timeout()信号和插槽之间的实际连接是在计时器所在的小部件的构造函数中完成的。

我已经检查过,并且信号/插槽连接返回的是true,所以连接在那里。

有什么原因会发生这种情况吗? 它是否与正在启动QTimer的事件现在在单例类而不是MainWindow类中发生有关?

似乎问题出在我的单例类在单独的线程上,并且QTimer无法从单独的线程触发。 我只是在原始MainWindow类中设置了一个插槽,以接受来自单例类的信号,然后调用捏缩放方法。 现在工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM