在使用Qt 的圖形框架QGraphicsScene,QGraphicsView實現圖形顯示時。遇到一個很棘手的BUG。
使用的圖形是自定義的QGraphicsObject的子類。
現象是將圖形添加到畫布上之后,用鼠標拖動圖形,圖形能正常改變位置,當再次用鼠標點擊圖形移動時,圖形會自動跳動到初始化的位置,并且畫布上其他的圖形也會在拖動時自動跳動到意外的位置。
經過分析后查找出問題:
在該QGraphicsObject的子類實現中mouseReleaseEvent的重寫中
沒有調用父類的 QGraphicsItem::mouseReleaseEvent(event);
結果出現非常詭異的情況
該圖形拖動后,第二次拖動時的位置會跳動到初始位置去,
而且其他圖形的位置也會發生錯誤。
圖形框架需要通過QGraphicsItem::mouseReleaseEvent(event)來處理圖形拖動后的位置信息,如果在重寫后的mouseReleaseEvent方法后不去調用父類的方法,這些需要框架去處理的事情就會得不到正確處理。
好吧,請隨手點一點全網最強word報告批量自動生成軟件QuickReporter!基于模板替換的word文檔自動生成_自動生成word文檔-CSDN博客