2011-11-19 24 views
0

我試圖爲矩形編寫句柄,以便可以調整其大小。它作品:手柄未被重新拉伸固定?

http://programmingexamples.net/wiki/Qt/Utilities/HandleItem#HandleItem.cpp

但一旦手柄周圍有點拖,其中大部分來自固體填充只轉來勾勒。在手柄過去的地方還有奇怪的工件。最終,一些手柄一起停止工作。任何人都可以解釋我看到的這些東西嗎?這種方法是否合理?我仍然不確定爲什麼必須實現boundingRect() - 看起來對象應該只保持它們的狀態變量的位置和大小?

任何建議,非常感謝。

回答

2

您的問題很可能是由於您在項目的boundingRect()外繪製了手柄而發生的。

boundingRect()需要在很多情況下實現,因爲你在paint()函數中做了有趣的事情,它可能超出了基類能夠知道的範圍。

這種事情的一個很好的調試技巧是實際從paint()函數中繪製boundingRect(),並確保可見的矩形適當地包含您的項目。例如:

painter->setPen(Qt::red) 
painter->drawRect(boundingRect()); 

如果您發現您的任何項目正在制定該矩形之外,那麼就會造成繪畫文物作爲QGraphicsScene以便依靠其準確性,以確定哪些場景的部分需要被重新粉刷。

+0

謝謝克里斯。我有正確的處理正常工作。當你用左手柄摺疊矩形時,右邊緣會移動,這不是我想要發生的事情(顯然)。任何線索哪裏出錯了?任何有趣的工作在這個請給我你的github用戶名:github.com/daviddoria/QtHandleItem –