我想有很多方法可以实现这一点。我有一个应用程序,其中视频流显示在自定义 QWidget 上,我有 QLabel 的子类,并使用 QPainter 绘制帧。鉴于此,是否可以让用户在图像上拖动一个矩形并检索坐标?要求是在拖动过程中矩形必须是可见的。
提前致谢,
看看QRubberBand。它允许您将这样的矩形放置在例如 QLabel 的顶部。该文档还包含一个如何使用鼠标移动和调整橡皮筋大小的示例。
在您的小部件中,您可以跟踪鼠标按下和释放的事件,并跟踪小部件上选择矩形的角在哪里。为了绘制矩形,我会看一下QStyle::drawFocusRect
. 我认为这样做的目的是绘制一个您可以看到的矩形,无论它背后是什么。
或者试试这个:
QStylePainter painter(this);
QStyleOptionFocusRect option;
option.initFrom(this);
option.backgroundColor = palette().color(QPalette::Background);
painter.drawPrimitive(QStyle::PE_FrameFocusRect, option);
有QGraphicsView
,void setRubberBandSelectionMode ( Qt::ItemSelectionMode mode )
但我不知道是否QLabel
有一些类似的功能......
也许您必须在用户拖动矩形并在 mouserelease 上捕获它时绘制自己的矩形
苏龙仔