1

我想有很多方法可以实现这一点。我有一个应用程序,其中视频流显示在自定义 QWidget 上,我有 QLabel 的子类,并使用 QPainter 绘制帧。鉴于此,是否可以让用户在图像上拖动一个矩形并检索坐标?要求是在拖动过程中矩形必须是可见的。

提前致谢,

4

3 回答 3

2

看看QRubberBand。它允许您将这样的矩形放置在例如 QLabel 的顶部。该文档还包含一个如何使用鼠标移动和调整橡皮筋大小的示例。

于 2013-02-02T14:05:00.867 回答
1

在您的小部件中,您可以跟踪鼠标按下和释放的事件,并跟踪小部件上选择矩形的角在哪里。为了绘制矩形,我会看一下QStyle::drawFocusRect. 我认为这样做的目的是绘制一个您可以看到的矩形,无论它背后是什么。

或者试试这个:

QStylePainter painter(this);
QStyleOptionFocusRect option;
option.initFrom(this);
option.backgroundColor = palette().color(QPalette::Background);
painter.drawPrimitive(QStyle::PE_FrameFocusRect, option);
于 2013-02-01T20:04:56.223 回答
1

QGraphicsViewvoid setRubberBandSelectionMode ( Qt::ItemSelectionMode mode )但我不知道是否QLabel有一些类似的功能......

也许您必须在用户拖动矩形并在 mouserelease 上捕获它时绘制自己的矩形

苏龙仔

于 2013-02-01T16:25:30.983 回答