【问题标题】:Drawing on an image which is inside a QScrollArea?在 QScrollArea 内的图像上绘图?
【发布时间】:2012-08-20 22:08:19
【问题描述】:

如果我将 QLabel 子类化并直接将 QLabel 添加到我的 QDialog 中,它可以正常工作。如果我在 ScrollArea 中添加这个标签,我正在绘制的东西不会显示,除非我调整对话框本身的大小。是的,很奇怪。

我已经设置了指示问题所在的可编译示例代码。我要做的是用鼠标选择图像的一个区域,方法是在相应的区域上绘制一个矩形。我的程序设计使用的图像可能非常大,因此,我需要有一个滚动区域,以便对话框保持在逻辑维度上,而不是填满整个屏幕(甚至多个工作区,如果我们正在谈论具有多个桌面的 linux 机器)。

一切正常,除了绘图(选择矩形)不可见,除非手动调整对话框的大小。我想我必须在绘图时更新一些东西,但我不确定是什么。好吧,这是示例代码:http://paste.ubuntu.com/1151553/

我不知道如何解决的另一个问题(我希望你的建议在那里)是(1)当用户选择一个区域时,如何将它设置为当用户通过推送实际选择一个区域时自动滚动靠在滚动区域的墙上(我想我在这里可以理解)。 (2) 有没有办法让用户选择一个矩形,然后,当他在按住 [Shift] 按钮的同时左键单击一个位置时,他先前选择的右下边缘实际上通过他单击的点在?

documentation 表示您必须以某种方式在某处设置布局,但我不确定如何针对我的情况执行此操作。

提前感谢您的帮助。

【问题讨论】:

    标签: image qt drawing qpainter qscrollarea


    【解决方案1】:

    关于问题(一):

    只使用事件。我认为鼠标进入事件或离开事件对此有好处。

    为此,我认为您可以使用填充整个屏幕的隐藏矩形。 并为该矩形覆盖鼠标离开事件并在该函数中告知滚动页面。

    【讨论】:

      猜你喜欢
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多