qt学习之鼠标事件

#include<QMouseEvent>

//鼠标进入事件
    void enterEvent(QEnterEvent *event);

    //鼠标离开事件
    void leaveEvent(QEvent *event);

//鼠标按下事件
    void mousePressEvent(QMouseEvent *event);
//鼠标施放事件    

void mouseReleaseEvent(QMouseEvent *event);
//鼠标移动事件    

void mouseMoveEvent(QMouseEvent *event);

//设置鼠标移动追踪
    setMouseTracking(true);

//判断按下的是鼠标左键

event->button()==Qt::LeftButton

//判断联合按键 ,判断move时是左键还是右键

event->buttons()&Qt::LeftButton

//格式化字符串

        QString str=QString("mvoe,x=%1,y=%2,globalX=%3,globalY=%4").arg(event->x()).arg(event->y()).arg(event->globalX()).arg(event->globalY());
 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt 中,你可以使用 `QWheelEvent` 来捕获鼠标滚轮事件,并通过操作 `QTabWidget` 的滑动条来实现 `QTabWidget` 的滑动。下面是一个示例代码: ```cpp #include <QApplication> #include <QTabWidget> #include <QWheelEvent> class MyTabWidget : public QTabWidget { public: MyTabWidget(QWidget *parent = nullptr) : QTabWidget(parent) { } protected: void wheelEvent(QWheelEvent *event) override { if (event->modifiers() == Qt::ControlModifier) { // 捕获鼠标滚轮事件,并通过滑动条滑动来实现 QTabWidget 的滑动 QScrollBar *scrollBar = verticalScrollBar(); int delta = event->angleDelta().y() / 120; scrollBar->setValue(scrollBar->value() - delta); } else { // 默认处理鼠标滚轮事件 QTabWidget::wheelEvent(event); } } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); MyTabWidget tabWidget; tabWidget.addTab(new QWidget, "Tab 1"); tabWidget.addTab(new QWidget, "Tab 2"); tabWidget.addTab(new QWidget, "Tab 3"); tabWidget.show(); return a.exec(); } ``` 在上面的示例中,我们创建了一个自定义的 `MyTabWidget` 类,继承自 `QTabWidget`。在 `MyTabWidget` 类中,我们重写了 `wheelEvent` 函数来捕获鼠标滚轮事件。 如果鼠标滚轮事件的修饰键是 `Qt::ControlModifier`,则我们获取滚轮事件的滚动角度,将其除以 120 得到滚动的步数。然后,我们通过操作 `QTabWidget` 的垂直滑动条来实现 `QTabWidget` 的滑动。 如果鼠标滚轮事件的修饰键不是 `Qt::ControlModifier`,则我们调用父类的 `wheelEvent` 函数来默认处理鼠标滚轮事件。 在 `main` 函数中,我们创建了自定义的 `MyTabWidget` 对象 `tabWidget`,并添加了几个选项卡。然后,我们显示 `tabWidget` 对象。 运行代码后,你可以尝试使用鼠标滚轮来滑动 `QTabWidget` 的滑动条,以实现 `QTabWidget` 的滑动效果。需要注意的是,你需要按住 Ctrl 键并使用鼠标滚轮来触发自定义的滑动逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值