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