QMouseevent 鼠标事件
Qt的Dialog类中可以使用鼠标事件
使用鼠标事件的时候加头文件
#include <QMouseEvent>
鼠标事件都有:(函数声明添加到类的protected:中)
void mousePressEvent(QMouseEvent *); //按下
void mouseMoveEvent(QMouseEvent *); //移动
void mouseReleaseEvent(QMouseEvent *); //释放
void mouseDoubleClickEvent(QMouseEvent *) //双击
void wheelEvent(QWheelEvent *event) //滚轮.添加头文件#include <QWheelEvent>
函数实现:
void Dialog::mousePressEvent(QMouseEvent *event)
{ if(event->button()==Qt::LeftButton) //鼠标左键按下
...}
void Dialog::mouseMoveEvent(QMouseEvent *event)
{ if(event->buttons()&Qt::LeftButton) //鼠标左键按下的同时移动鼠标
...}
void Dialog::mouseReleaseEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton) //鼠标左键释放
...}
void Dialog::mouseDoubleClickEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton) // 如果是鼠标左键按下
···}
void Dialog::wheelEvent(QWheelEvent *event)
{
if(event->delta()>0) //当滚轮远离使用者
...
else //当滚轮向使用者方向旋转
...}
其中mouseMoveEvent(QMouseEvent *) 在按键按下并且鼠标移动的时候触发。
如果要自动触发设置:
setMouseTracking(true);
鼠标状态有:
Qt::LeftButton //左键
Qt::RightButton //右键
Qt::MidButton //中键
pos() posF() x() y()获得接收鼠标事件时鼠标的坐标
event->pos() //返回坐标,为整型
event->posF() //返回坐标,为float型更加精确
event->x() //相当于event->pos().x()
event->y() //相当于event->pos().y()