1.新建工程
2.myrubberband.h
#ifndef MYRUBBERBAND_H
#define MYRUBBERBAND_H
#include <QWidget>
//添加
class QRubberBand;
namespace Ui {
class myRubberBand;
}
class myRubberBand : public QWidget
{
Q_OBJECT
public:
explicit myRubberBand(QWidget *parent = 0);
~myRubberBand();
private:
Ui::myRubberBand *ui;
//添加
private:
QPoint origin;
QRubberBand *rubberBand;
protected:
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
};
#endif // MYRUBBERBAND_H
3.myrubberband.cpp
#include "myrubberband.h"
#include "ui_myrubberband.h"
//添加
#include<QMouseEvent>
#include<QRubberBand>
myRubberBand::myRubberBand(QWidget *parent) :
QWidget(parent),
ui(new Ui::myRubberBand)
{
ui->setupUi(this);
//添加
rubberBand=NULL;
}
myRubberBand::~myRubberBand()
{
delete ui;
}
//添加
void myRubberBand::mousePressEvent(QMouseEvent *event)
{
if( event->button()==Qt::LeftButton)
{
origin = event->pos();
if (!rubberBand)
rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
rubberBand->setGeometry(QRect(origin, QSize()));
rubberBand->show();
}
}
void myRubberBand::mouseMoveEvent(QMouseEvent *event)
{
rubberBand->setGeometry(QRect(origin, event->pos()).normalized());
}
void myRubberBand::mouseReleaseEvent(QMouseEvent *event)
{
//rubberBand->hide();
// determine selection, for example using QRect::intersects()
// and QRect::contains().
}
4.结果
参考自Qt帮助文档