【问题标题】:intercept and ignore a wheel event in a QTabWidget拦截并忽略 QTabWidget 中的轮子事件
【发布时间】:2016-06-29 07:33:50
【问题描述】:

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

在我的 tabWidget 中,我有一个 dataEditor 来显示点,我创建了一个“+”选项卡来创建一个新选项卡。选项卡的创建是由一个连接函数完成的,它位于主窗口中:

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

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

【问题讨论】:

标签: c++ qt events


【解决方案1】:

您必须继承QTabBar 来处理QWheelEvent,然后在初始化期间调用QTabWidget::setTabBar

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2016-10-23
    • 2020-12-04
    • 1970-01-01
    • 2015-11-05
    • 2021-06-27
    相关资源
    最近更新 更多