我在QLabel
上有一个橡皮筋。我想使用鼠标拖动和调整橡皮筋的大小。有人可以帮忙吗?
以下是我的代码:
void Widget::mousePressEvent(QMouseEvent *event)
{
if(mRubberBand->geometry().contains(event->pos()))
{
rubberband_offset = event->pos() - mRubberBand->pos();
move_rubberband = true;
}
else
{
Origin= event->pos();
//qDebug()<<Origin;
// Move the rubber band to the new position
// and set its size to 0x0
mRubberBand->setGeometry(QRect(Origin, QSize()));
// Display the rubber band
mRubberBand->show();
}
}
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{
// esize the rubber band rectangle
if(move_rubberband)
{
mRubberBand->move(event->pos() - rubberband_offset);
}
else
{
mRubberBand->setGeometry(QRect(Origin, event->pos()).normalized());
// Display the size of the rectangle
QToolTip::showText( event->globalPos(), QString("%1,%2")
.arg(mRubberBand->size().width())
.arg(mRubberBand->size().height()),this );
//qDebug()<<Origin<<" "<<mRubberBand->size().width()<<","<<mRubberBand->size().height();
//qDebug()<<Origin.x()<<Origin.y();
}
}
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
EndPoint = event->pos();
}
答案 0 :(得分:0)
实际上并不是一个答案,但没有足够的信用评论。
你的代码有点破碎。您在哪里将move_rubberband
设置为false
?
所以永远不会达到mRubberBand->setGeometry(QRect(Origin, event->pos()).normalized());
。
我猜你是在未粘贴的releaseEvent中做到的?