8-使用QT5的鼠标事件和滚轮事件

使用QT5的鼠标事件和滚轮事件

----完成鼠标左键拖动窗口,双击全屏,滚轮放大缩小窗口大小

         这里使用的是QMouseEvent类里面的鼠标事件,通常进行重定义部件的鼠标事件处理函数来实现自定义的内容操作。同样,鼠标滚轮操作是利用QWheelEvent实现滚轮事件。

其中:

voidmousePressEvent(QMouseEvent *event);这个是鼠标按下的时候调用该函数
voidmouseReleaseEvent(QMouseEvent *event);这个是鼠标松开按键的时候调用
voidmouseDoubleClickEvent(QMouseEvent *event);这个是鼠标双击的时候调用
voidmouseMoveEvent(QMouseEvent *event);这个是鼠标按下状态中,移动的时候调用
void wheelEvent(QWheelEvent*event); 这个是鼠标上下滚轮的时候会调用

上述鼠标事件并不完全,但是对于一般我们使用完全足够了。

通过重定义上述函数来实现鼠标、滚轮操作后的自定义的内容处理。

 

现在我们来通过一个具体的程序来看看如何实现的。

首先,新建工程。我们先新建一个QT Gui应用,项目名称我命名为QtEvent,其他的全部默认。

第二步,添加头文件与变量。我们在mainwindows.h里添加头文件:

#include<QMous

Qt中,可以通过重写QWidget类中的鼠标事件函数来处理鼠标事件,包括鼠标点击、移动、释放等。常用的鼠标事件函数有: - mousePressEvent(QMouseEvent *event):鼠标按下事件 - mouseMoveEvent(QMouseEvent *event):鼠标移动事件 - mouseReleaseEvent(QMouseEvent *event):鼠标释放事件 另外,在处理鼠标移动事件时,可以通过调用QWidget类中的setMouseTracking(bool enable)函数来开启或关闭鼠标跟踪功能,以便在鼠标移动时及时获取鼠标位置信息。 而处理鼠标滚轮事件,可以通过重写QWidget类中的wheelEvent(QWheelEvent *event)函数来实现。在该函数中,可以通过QWheelEvent类提供的delta()函数获取鼠标滚轮滚动的距离。 下面是一个简单的例子,演示了如何在QWidget窗口中处理鼠标事件滚轮事件: ```cpp #include <QtWidgets> class MyWidget : public QWidget { public: MyWidget(QWidget *parent = nullptr) : QWidget(parent) { setMouseTracking(true); // 开启鼠标跟踪功能 } protected: void mousePressEvent(QMouseEvent *event) override { if (event->button() == Qt::LeftButton) { qDebug() << "Left button pressed at" << event->pos(); } } void mouseMoveEvent(QMouseEvent *event) override { qDebug() << "Mouse moved to" << event->pos(); } void mouseReleaseEvent(QMouseEvent *event) override { if (event->button() == Qt::LeftButton) { qDebug() << "Left button released at" << event->pos(); } } void wheelEvent(QWheelEvent *event) override { qDebug() << "Mouse wheel rotated by" << event->delta(); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWidget widget; widget.show(); return app.exec(); } ``` 在上面的例子中,我们重写了QWidget类中的mousePressEvent()、mouseMoveEvent()、mouseReleaseEvent()wheelEvent()函数,分别处理鼠标按下、移动、释放滚轮事件。同时,在构造函数中调用了setMouseTracking(true)函数开启鼠标跟踪功能。最后创建了一个MyWidget对象并显示出来。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值