1

我正在使用 Qt(当前为 4.8)制作一个应用程序,它显示来自大量 QGraphicsScene 项目的文字映射。我想用比例注释视图。我对比例的要求是它永久固定在视口小部件上。每当视图比例发生变化(放大等)时,都需要更新它。还有其他可能的叠加项目(指南针等),所以我更喜欢通用解决方案。

我已经查看了有关此问题的早期问题,这些问题表明:

  • 使用 ItemIgnoresTransform
  • 使用覆盖像素图。

我尝试了 IgnoresTransform 但这种方式不起作用:我无法弄清楚如何将它固定在(比如说)视口的底角,并且在让文本和线条始终以正确的大小显示时遇到了一些困难.

我废弃了它并将 QGraphicsView 子类化,通过重新实现paintEvent(调用原始像素图,然后在顶部绘制覆盖像素图)添加一个覆盖像素图,以及一个指示它去哪里的对齐选项。编写一些像素图绘制代码会在视图上生成可用的比例。耶!......但它不适用于卷轴 - 我得到整个比例的“破碎”渲染,或者有时根本没有比例。我认为这是因为 QGraphicsView::scrollViewportBy() 使用 viewport()->scroll() 所以我想知道切换到 ViewportSmartUpdate 是否会有所帮助,但这并没有足够的帮助。我不希望切换到 ViewportFullUpdate,因为这可能会降低应用程序的速度(场景中有数百万个项目,并且需要完全重新绘制才能移动)。

所以。从这里有什么想法吗?调整我的像素图代码以写入覆盖在视口上的新的大部分透明的小部件是更好的方法吗?

谢谢你的帮助...

4

1 回答 1

1

尽管这可能不是最好的方法,但过去我已经将自定义小部件添加到包含 QGraphicsView / QGraphicsScene 的窗口中,它们与场景中的 QGraphicObjects 具有相同的图形样式。当视图随后用于移动场景中的对象或场景本身时,窗口上的项目将保留在同一位置。
希望有帮助。

于 2013-04-25T08:40:06.473 回答