在Qt中将图像拖过图像

时间:2013-02-01 16:03:19

标签: c++ qt qt4 qlabel

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

提前致谢,

3 个答案:

答案 0 :(得分:1)

QGraphicsViewvoid 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。该文档还包含如何使用鼠标移动橡皮筋和调整橡皮筋大小的示例。