0
点赞
收藏
分享

微信扫一扫

55 QT鼠标事件

QMouseEvent类用来表示一个鼠标事件,当在窗口部件中按下鼠标或者移动鼠标指针时,都会产生鼠标事件。利用QMouseEvent类可以获知鼠标是哪个键按下了,还有鼠标指针的当前位置等信息。通常是重定义部件的鼠标事件处理函数来进行一些自定义的操作。  

QWheelEvent类用来表示鼠标滚轮事件,在这个类中主要是获取滚轮移动的方向和距离。

下面来看一个实际的例子,这个例子要实现的效果是:可以在界面上按着鼠标左键来拖动窗口,双击鼠标左键来使其全屏,按着鼠标右键则使指针变为一个自定义的图片,而使用滚轮则可以放大或者缩小编辑器中的内容。

实例代码:

void Widget::mouseDoubleClickEvent(QMouseEvent *event)  //鼠标双击
{
qDebug()<<"mouse DoubleClick";
}

void Widget::mouseMoveEvent(QMouseEvent *event) //鼠标移动
{
qDebug()<<"mouse pos"<<event->pos();
}

void Widget::mousePressEvent(QMouseEvent *event) //鼠标按键按下
{
if (event->button() == Qt::LeftButton) {
qDebug()<<"left button press";
}else if(event->button() == Qt::RightButton) {
qDebug()<<"right button press";
}else if(event->button() == Qt::MidButton) {
qDebug()<<"mid button press";
}
}

void Widget::mouseReleaseEvent(QMouseEvent *event) //鼠标按键释放
{
if (event->button() == Qt::LeftButton) {
qDebug()<<"left button release";
}else if(event->button() == Qt::RightButton) {
qDebug()<<"right button release";
}else if(event->button() == Qt::MidButton) {
qDebug()<<"mid button release";
}
}

对于鼠标的移动事件,默认是不会实时触发事件(就是只有当左键一直按住,然后滑动鼠标才会触发事件),如果要开启实时触发事件。

就要在构造函数中添加下面的代码。

setMouseTracking(false);//设置鼠标实时追踪模式 true表示开启 false表示关闭

 

Mouse的button

Constant

Value

Description

​Qt::NoButton​

​0x00000000​

The button state does not refer to any button (see QMouseEvent::button()).

​Qt::AllButtons​

​0x07ffffff​

This value corresponds to a mask of all possible mouse buttons. Use to set the 'acceptedButtons' property of a MouseArea to accept ALL mouse buttons.

​Qt::LeftButton​

​0x00000001​

The left button is pressed, or an event refers to the left button. (The left button may be the right button on left-handed mice.)

​Qt::RightButton​

​0x00000002​

The right button.

​Qt::MidButton​

​0x00000004​

The middle button.

​Qt::MiddleButton​

​MidButton​

The middle button.

滚轮事件

void Widget::wheelEvent(QWheelEvent * event)
{
if (event->delta() > 0) {
qDebug()<<"front"<<event->delta()/8; //向前滚动多少度
}else{
qDebug()<<"back"<<event->delta()/8; //向后滚动多少度
}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

举报

相关推荐

0 条评论