2011-04-20 138 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项目的其余部分。