我用Qt实现了一个UI。我的UI是一个包含一些小部件的主窗口,以及一个管理我的小部件行为的主管。在我的一个小部件outputDataWidget中,我有一个QTabWidget和其他一些小部件。

在我的tabWidget中,我有一个dataEditor来显示点,并创建一个“+”选项卡来创建一个新的选项卡。选项卡的创建是通过连接功能完成的,该功能位于主窗口中:

connect(outputWidget.get(), SIGNAL(SIG_createNewOutput(int)), projectSupervisor.get(), SLOT(sCreateNewOutput(int)));

我的问题是:当我们使用选项卡标题中的滚轮鼠标按钮变得不正确时,会创建一些新页面。我想拦截信号并避免创建新标签。
我尝试在主窗口和outputdatawidget中添加一个filter事件,以忽略wheel事件。然后,我尝试重新实现QTabWidget的wheelEvent(QWheelEvent * we)和event(QEvent * e)。每次,我们在调用connect(创建选项卡)后输入thiese修改。
您是否知道如何在连接之前调用事件,或者如何禁用QTabWidget的wheelevent?
谢谢

最佳答案

您必须将QTabBar子类化以处理QWheelEvent,然后在初始化期间调用 QTabWidget::setTabBar

这是必需的,因为QTabWidget在内部使用带QTabBarQt::WheelFocus,因此wheel事件永远不会传播到选项卡小部件。

关于c++ - 拦截并忽略QTabWidget中的wheel事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38093145/

10-12 21:31