继承 class QWidget 类,重写鼠标响应事件虚函数:
virtual void wheelEvent(QWheelEvent * event);
virtual void mousePressEvent(QMouseEvent * event);
virtual void mouseMoveEvent(QMouseEvent * event);
重写鼠标滚轮响应事件:
void ViewWidge::wheelEvent(QWheelEvent * event)
{
double zoomFactor = 1;
if(event->delta() > 0)
zoomFactor = 1 / 0.8;
else
zoomFactor = 0.8;
//zoom in or zoom out 操作 zoomFactor
update(); //窗口更新 void ViewWidget::paintEvent(QPaintEvent *event)
}
鼠标左键按下事件:
void ViewWidget::mousePressEvent(QMouseEvent * event)
{
switch (event->button()) {
case Qt::LeftButton:
{
//鼠标左键按下处理
}
break;
case Qt::RightButton: // 0x00000002
{
//鼠标右键按下处理
}
break;
default:
break;
}
}
鼠标左键按下并且移动鼠标事件响应:
void ViewWidgetEx::mouseMoveEvent(QMouseEvent *event)
{
QPoint currentMousePt = event->pos();
Qt::MouseButtons btns = event->buttons();
if (Qt::LeftButton == (btns & Qt::LeftButton) )
{
//左键按下鼠标移动响应事件
update(); //更新窗口
}
}