您的位置:首页 > 编程语言 > Qt开发

Qt学习笔记(三)鼠标事件

2018-02-01 15:40 288 查看
通过重载相关部件的鼠标事件,来进行自定义。

void mousePressEvent(QMouseEvent* event);//当鼠标按下时调用
void mouseReleaseEvent(QMouseEvent *event);//当鼠标松开时调用
void mouseMoveEvent(QMouseEvent *event);//当鼠标按下时移动才会调用,为默认情况。

(1)可以通过设置this->setMouseTracking(true);来使鼠标无须按下也可调用mouseMoveEvent;

设置时要从父组件逐个设置到相应的子部件。

(2)或者通过重载bool event(QEvent *event);来实现实时获取鼠标移动的事件

bool event(QEvent *event)
{
if (event->type() == QEvent::HoverEnter || event->type() == QEvent::HoverLeave|| event->type() == QEvent::HoverMove)
{
相应的事件
}
}

下面介绍一些相关的知识:
1.获取鼠标位置

QHoverEvent* pHoverEvent = static_cast<QHoverEvent *>(event);
int x = pHoverEvent->pos().x();
int y = pHoverEvent->pos().y();//该位置为相对于程序窗体的位置

int x = event->globalX();//该位置为相对于整个屏幕的位置

int y = event->globalY();

2.获取鼠标按下哪个键

if (event->buttons() & )//如果按下左键,类似的有按下右键、双击、滚轮

Qt::NoButton

Qt::LeftButton

Qt::RightButton

Qt::MidButton
3.设置鼠标样式

setCursor(Qt::SizeVerCursor);

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: