C++ 在Qt中的图像上拖动一个矩形

C++ 在Qt中的图像上拖动一个矩形,c++,qt,qt4,qlabel,C++,Qt,Qt4,Qlabel,我想有很多方法可以做到这一点。我有一个应用程序,其中一个视频流显示在一个定制的QWidget上,我有来自QLabel的子类,并使用QPaint绘制帧。鉴于此,是否可以让用户在图像上拖动一个矩形并检索坐标?要求在拖动过程中矩形必须可见 提前感谢,QGraphicsView具有无效设置RubberBandSelectionMode(Qt::ItemSelectionMode),但我不知道QLabel是否具有类似的功能 当用户拖动矩形并在鼠标上轻松捕捉时,您可能需要绘制自己的矩形 soo long z

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


提前感谢,

QGraphicsView具有
无效设置RubberBandSelectionMode(Qt::ItemSelectionMode)
,但我不知道
QLabel
是否具有类似的功能

当用户拖动矩形并在鼠标上轻松捕捉时,您可能需要绘制自己的矩形


soo long zai

QGraphicsView具有
无效设置RubberBandSelectionMode(Qt::ItemSelectionMode)
,但我不知道
QLabel
是否具有类似的功能

当用户拖动矩形并在鼠标上轻松捕捉时,您可能需要绘制自己的矩形


soo long zai

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

或者试试这个:

QStylePainter painter(this);
QStyleOptionFocusRect option;
option.initFrom(this);
option.backgroundColor = palette().color(QPalette::Background);
painter.drawPrimitive(QStyle::PE_FrameFocusRect, option);

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

或者试试这个:

QStylePainter painter(this);
QStyleOptionFocusRect option;
option.initFrom(this);
option.backgroundColor = palette().color(QPalette::Background);
painter.drawPrimitive(QStyle::PE_FrameFocusRect, option);

看一看。它允许您将这样一个rect放置在例如QLabel的顶部。文档中还包含一个如何使用鼠标移动和调整橡胶垫大小的示例。

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

用户如何选择矩形?矩形是“普通”的吗?如果是这样,完全有可能用户是如何选择矩形的?矩形是“普通”的吗?如果是的话,这是完全可能的