首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTimer timeout()方法在代码重构后不再触发

QTimer timeout()方法在代码重构后不再触发
EN

Stack Overflow用户
提问于 2019-08-01 21:40:15
回答 1查看 60关注 0票数 0

我最近重新格式化了一些代码,使其更具可读性。我在MainWindow类中编写了处理触摸事件的代码。在这些函数中有一个pinchZoom函数,它在我进行更改之前就开始工作了。我将代码移到了一个单例类中,它是一个QObject。

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

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-01 22:28:30

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57310386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档