QTimer timeout() 方法在代码重组后不再触发
QTimer timeout() method no longer firing after code restructure
我最近重新格式化了一些代码以提高可读性。我的 MainWindow class 中有代码来处理触摸事件。在这些函数中有一个 pinchZoom 函数,它在我进行更改之前就可以使用。我将代码移到了单例 class 这是一个 QObject.
当检测到 pinchZoom 时,相关小部件(由 QApplication::widgetAt() 找到)调用其 pinchZoom() 方法,该方法停止然后重新启动单次 QTimer。 QTimer 的 timeout()
方法连接到一个插槽,该插槽执行实际的缩放和更新视图。这样我就可以在实际的缩放手势和视图更新之间添加延迟。
在移动我的代码之前,这个 timeout()
信号工作正常并且触发了缩放方法。然而,尽管没有触及 signal/slot 连接,但不再调用由 timeout()
方法触发的缩放槽。 timeout()
信号和插槽之间的实际连接是在计时器所在的小部件的构造函数中完成的。
我已经检查过,signal/slot 连接返回真,所以连接就在那里。
发生这种情况有什么原因吗?这是否与正在启动的 QTimer 现在是在单例 class 而不是 MainWindow class 中发生的事实有关?
似乎问题是我的单例 class 在一个单独的线程上,并且 QTimer 无法从一个单独的线程触发。我只是在原来的 MainWindow class 中设置了一个插槽来接受来自单例 class 的信号,然后调用 pinch zoom 方法。现在工作正常。
我最近重新格式化了一些代码以提高可读性。我的 MainWindow class 中有代码来处理触摸事件。在这些函数中有一个 pinchZoom 函数,它在我进行更改之前就可以使用。我将代码移到了单例 class 这是一个 QObject.
当检测到 pinchZoom 时,相关小部件(由 QApplication::widgetAt() 找到)调用其 pinchZoom() 方法,该方法停止然后重新启动单次 QTimer。 QTimer 的 timeout()
方法连接到一个插槽,该插槽执行实际的缩放和更新视图。这样我就可以在实际的缩放手势和视图更新之间添加延迟。
在移动我的代码之前,这个 timeout()
信号工作正常并且触发了缩放方法。然而,尽管没有触及 signal/slot 连接,但不再调用由 timeout()
方法触发的缩放槽。 timeout()
信号和插槽之间的实际连接是在计时器所在的小部件的构造函数中完成的。
我已经检查过,signal/slot 连接返回真,所以连接就在那里。
发生这种情况有什么原因吗?这是否与正在启动的 QTimer 现在是在单例 class 而不是 MainWindow class 中发生的事实有关?
似乎问题是我的单例 class 在一个单独的线程上,并且 QTimer 无法从一个单独的线程触发。我只是在原来的 MainWindow class 中设置了一个插槽来接受来自单例 class 的信号,然后调用 pinch zoom 方法。现在工作正常。