1

我想创建一个可调整大小的选择工具来用鼠标选择图像的一部分。我想用 QT 来完成这个,我有一个工作的 QRubberBand 来创建一个基本的选择。

下一步是使用鼠标使该选择可调整大小。因此,如果您单击并拖动一个角,大小会相应更改,如果您在选择内单击并拖动,它应该移动选择。

现在我的想法是继承 QRubberBand 并覆盖 paintEvent 方法以在每个角落绘制一个大点并在这些点上执行 mouseevents。但我想知道是否有人有更聪明/更好的方法来做到这一点?

我想听听这方面的一些想法。提前致谢。

4

2 回答 2

0

我以前做过类似的事情。我使用 QGraphicsView 而不是 QWidget,这使开发变得更加容易。我使用 QGraphicsItem 作为“橡皮筋”。QGraphicsView 已经处理了大量的用户交互,所以我不必费心重新实现 QWidget::mouseMove() 事件等。此外,由于 QGraphicsView 优化,性能比 QWidget 快得多。

希望这可以帮助

于 2011-04-20T11:46:05.920 回答
0

我刚刚为我的 Qt 图像和矢量查看器实现了一个用于任意交互式叠加图形的通用框架。请参阅https://github.com/dov/Qviv/tree/Lasso/Lasso中的分支 Lasso 。您可以编译它,scons然后运行testLasso以测试它。目前,该测试实现了一个可移动的半透明卡尺,但您可以轻松地将其更改为您想要的任何图形。请注意,Lasso 子目录目前完全独立于 Qviv 项目的其余部分。

于 2013-05-05T15:26:00.583 回答