【问题标题】:resizeable rubberband with QT带 QT 的可调整大小的橡皮筋
【发布时间】:2011-04-20 10:59:39
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你实现过这个吗?我希望做同样的事情。
  • 不,我从来没有这样做过,因为项目被推迟了,但我这周会继续努力。这是你做的吗?如果有,有什么建议吗?
  • 我几乎让它工作了。完成后我会发布一个链接(本周晚些时候)。
  • 我的手柄正常工作。当您用左手柄折叠矩形时,右边缘会移动,这不是我想要发生的(显然)。任何线索哪里出错了?任何对此感兴趣的人请将您的 github 用户名发送给我:github.com/daviddoria/QtHandleItem

标签: c++ qt qt4 rubber-band


【解决方案1】:

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

希望对你有帮助

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多