簡體   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