如何在Qlabel上使用鼠标拖动和调整橡皮筋的大小?

时间:2015-11-10 04:28:37

标签: c++ qt

我在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();
 }

1 个答案:

答案 0 :(得分:0)

实际上并不是一个答案,但没有足够的信用评论。

你的代码有点破碎。您在哪里将move_rubberband设置为false

所以永远不会达到mRubberBand->setGeometry(QRect(Origin, event->pos()).normalized());

我猜你是在未粘贴的releaseEvent中做到的?