记录qt窗口在拖动过程中出现的问题
生活随笔
收集整理的這篇文章主要介紹了
记录qt窗口在拖动过程中出现的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題描述:
在窗口拖動的過程中剛開始可以流暢的拖動窗口,但是一小會兒之后出現窗口拖不動的現象,或者按下鼠標在拖動區域內可以流暢拖動,但是按下鼠標朝一個方向拖動后,釋放鼠標,按照此操作操作幾次后,出現窗口拖不動的情況,但是過一會兒后窗口又可以被拖動。
發生問題的環境介紹:
在窗口中創建了一個場景qgraphicsScene,此場景為自定義場景,在自定義場景的構造函數中創建一個圖形項,設置此圖形項的屬性:畫筆的粗細,顏色等。在自定義場景中重寫鼠標的按下,移動,釋放事件。通過鼠標事件的響應可以實現場景中圖形項的移動。
解決的方法:
通過輸出信息判斷圖形項的rect其雖然在窗口中移動,但是其位置坐標變為了負值,此時便會出現拖不動的情況,另外,鼠標按下的點的坐標出現負值時也會出現上述拖不動的現象。故位置坐標有問題,由于是在一個窗口中拖動坐標,位置又出現負值,因此添加拖動過程中對邊界的限制以及對鼠標按下的點的位置設置。
其添加的設置代碼如下:
ptTopLeft是被拖動的圖形項的左上角坐標,對其位置做出限制,避免了其值為負,場景移動的過程中越過其所在窗口邊界。
對于鼠標按下的點的設置和上面基本差不多。
scenePos()獲取的是按下點的場景坐標,當然在拖動過程中圖形項和按下的點的坐標類型都為場景坐標,其中宏SMALL_H及SMALL_W為窗口的大小。
只做記錄。
總結
以上是生活随笔為你收集整理的记录qt窗口在拖动过程中出现的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux手机适配,nginx同时适配P
- 下一篇: c语言 若未给全局变量赋初值,自我测试练