我用Qt实现了一个UI。我的UI是一个包含一些小部件的主窗口,以及一个管理我的小部件行为的主管。在我的一个小部件 outputDataWidget 中,我有一个QTabWidget和一些其他小部件。
在我的tabWidget中,我有一个dataEditor来显示点数,我创建了一个" +"选项卡,以创建新选项卡。选项卡创建由connect函数完成,该函数位于主窗口中:
connect(outputWidget.get(), SIGNAL(SIG_createNewOutput(int)), projectSupervisor.get(), SLOT(sCreateNewOutput(int)));
我的问题是:当我们使用选项卡标题中的滚轮鼠标按钮进行操作时,会创建一些新页面。我想拦截信号并避免创建新标签。 我尝试在mainwindow和outputdatawidget中添加一个过滤器事件来忽略wheel事件。然后我尝试重新实现QTabWidget的 wheelEvent(QWheelEvent * we)和事件(QEvent * e)。每次,我们在调用connect(创建选项卡)后进入thiese修改。 您是否知道如何在连接之前调用事件,或者如何禁用QTabWidget的轮询? 感谢
答案 0 :(得分:3)
您必须继承QTabBar
来处理QWheelEvent
,然后在初始化期间调用QTabWidget::setTabBar
。
这是必要的,因为QTabWidget
内部使用带有QTabBar
的{{1}},因此wheel事件永远不会传播到标签小部件。