2011-04-20 89 views
1

我想創建一個可調整大小的選擇工具,用鼠標選擇圖像的一部分。 我想用QT來完成這個任務,我有一個工作的QRubberBand來創建一個基本的選擇。使用QT調整大小的橡皮筋

下一步是使用鼠標調整選擇大小。 所以如果你點擊&拖動一個角落,大小會相應地改變,如果你點擊&在選擇內部拖動,它應該移動選擇。

現在我的想法是繼承QRubberBand並覆蓋paintEvent方法在每個角落繪製一個大點並在這些點上執行mouseevents。 但我想知道如果有人有這樣做更聰明/更好的方式?

我想聽聽這方面的一些想法。 在此先感謝。

+0

你有沒有實施過這個?我期待着做同樣的事情。 – 2011-11-15 16:41:41

+0

不,我從來沒有這樣做過,因爲這個項目被推回來了,但是我會在這個星期努力。你做到了嗎?如果有的話,提示? – user458753 2011-11-21 13:41:30

+0

我幾乎有它的工作。完成後我會發佈一個鏈接(本週晚些時候)。 – 2011-11-21 18:36:07

回答

0

我之前做過類似的事情。我使用QGraphicsView而不是QWidget,這使開發變得更容易。我使用QGraphicsItem作爲「橡皮筋」。 QGraphicsView已經處理了大量的用戶交互,所以我不必爲重新實現QWidget :: mouseMove()事件等而煩惱。另外,由於QGraphicsView優化,性能比在QWidget上快得多。

希望這有助於

0

我只是實現了一個總體框架任意交互覆蓋圖形爲我的Qt圖像和矢量瀏覽器。請參閱https://github.com/dov/Qviv/tree/Lasso/Lasso中的Lasso分支。您可以使用scons進行編譯,然後運行testLasso進行測試。目前該測試使用可移動的半透明卡尺,但您可以輕鬆將其更改爲您所需的任何圖形。請注意,Lasso子目錄目前完全獨立於Qviv項目的其餘部分。