簡體   English   中英

如何在Qt中創建自定義輪事件?

[英]How to create custom wheel events in Qt?

我發現了有關自定義QEvents多個問題。 因此,從Qt 4開始,我們必須從QEvent派生並注冊我們的自定義類型。 周圍有一些樣品。

我想要的是一個帶有自定義數據的QWheelEvent 因此,事件應該可以在任何地方作為“普通” QWheelEvent但如果我想,我可以檢查我的CustomWheelEvent類型並CustomWheelEvent檢索數據。

問題是我不知道如何注冊類型,因為QWheelEvent的構造函數不提供設置事件類型的可能性。

查看QEvent的內部結構,我可以簡單地將受保護的成員Type t設置為registerEventType()返回的事件類型。 這有副作用嗎?

如果我只是從QWheelEvent派生,我也可以使用dynamic_cast來查明它是否是我自己攜帶自定義數據的事件。 檢查類型后,一個簡單的靜態強制轉換應該更好。

有什么想法嗎?


編輯:我已經嘗試過使用dynamic_casts的方法但是演員似乎失敗了。 如果Qt在內部對事件進行深度復制,則可以創建新的QWheelEvent ,並通過事件系統而不是CustomWheelEvent 這樣,我自己的數據(在CustomWheelEvent定義)被剝離對象,只處理基類( QWheelEvent )。 我原本以為指針按原樣使用,所以我可以依賴dynamic_cast 歡迎提供更多相關信息!

閱讀: Qt:定義自定義事件類型

我認為您確實想要注冊該事件,並且它將返回一個新的未使用類型(數字)。 在那里的示例中,靜態對象將值設置為QEvent :: None。 我在解決方案中看到的主要問題是它不是線程安全的,所以,一定要以某種方式使這個線程安全(比如可能在事情開始之前調用靜態類型方法,以便它們在被用於之前被初始化)多線程方式)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM