qt 鼠标滚轮 tabview滑动
时间: 2023-09-03 11:07:49 浏览: 69
在 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 键并使用鼠标滚轮来触发自定义的滑动逻辑。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)