gpt4 book ai didi

c++ - QTimer timeout() 方法在代码重组后不再触发

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:05 26 4
gpt4 key购买 nike

我最近重新格式化了一些代码以提高可读性。我的 MainWindow 类中有代码来处理触摸事件。在这些函数中有一个 pinchZoom 函数,它在我进行更改之前就可以使用。我将代码移到了 QObject 单例类中。

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

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

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

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

最佳答案

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

关于c++ - QTimer timeout() 方法在代码重组后不再触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57310386/

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