自定义ctrl+鼠标滚轮事件

mousewheel事件

<!-- html里我用的 angular写的,也可以直接在js中监听 mousewheel 方法 -->
<div class="thumbnail-content scroll-bar"
     (mousewheel)="mousewheel($event)"
     (DOMMouseScroll)="mousewheel($event)">
</div>

注意: 鼠标滚轮滚动事件 mousewheel()。但是火狐浏览器不兼容此方法,火狐浏览器的鼠标滚轮滚动事件为 DOMMouseScroll()

mousewheel(event: any) {
   // ctrl键按下了 event.ctrlKey
   if (event.ctrlKey) {
   	// 取消浏览器默认的放大缩小网页行为
     event.preventDefault();
     if (event.wheelDelta < 0 || event.detail < 0) {
       // 鼠标滚轮往下滚动
       ...
     } else if (event.wheelDelta > 0 || event.detail > 0) {
       // 鼠标滚轮往上滚动
       ...
     }
   }
}

注意:谷歌是 event.wheelDelta 大于0向上滚动,小于0向下滚动
火狐是 event.detail 大于0向上滚动,小于0向下滚动

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值