我有一個非常簡單的代碼來繪製圖形頂點之間的箭頭,這受到Qt圖示例應用程序的啓發,但我在渲染工件方面存在問題。當我使用下面的代碼在場景中手動繪製QPolygonF導致更新時出現渲染問題
QPolygonF arrowHead;
... some setup
painter->drawPolygon(arrowHead);
,然後我周圍的頂點移動到(arrowHead
多邊形)指着三角形,它得到重新粉刷油漆三角形多邊形冒頭,但老三角仍然停留呈現屏幕
在scene
但是修復這個問題(拖動的背景下,或從其他地方調用update/invalidate
)任何更新上。
的問題是,我不知道從哪裏給力更新,或如何告訴Qt來圍繞真實被拖動的頂點整個區域無效。
我試着在頂點上的itemChange
事件中調用scene()->invalidate()
(也更新),因爲它被拖動,但是這會導致整個應用程序崩潰,所以我假設我不允許從那裏調用更新。我也不能直接從paint
方法中調用update
,因爲這會在其自己的paint
方法中無限遞歸。
我是否正確渲染,或者我需要手動更新場景? Here's a link to the whole rendering source code,但我想我可能在繪畫方面做了一些基本的錯誤。
雖然這可行,但這是一種過度蠻力的方法。你錯過了真正的問題。 – 2015-02-15 20:16:04