工具栏中的action按钮无法响应事件 eventfilter没有过滤出来

lin_gui 2016-03-22 03:01:12
如题
环境:QT5.6 LTS版 + MINGW492
操作说明:
用QT Creator创建的ui界面,mainwindow中拖入一个maintoolbar,在maintoolbar上添加了几个action按钮,进行了事件注册于eventfilter重写,但就是不能进入eventfilter进行事件处理,另外,为了验证eventfilter是否OK, 后来注册maintoolbar的事件,这时候发现可以进入eventfilter。有遇到过的么?
mainwindow、maintoolbar、action的关系:mainwindow承载maintoolbar,maintoolbar承载action。怀疑action上面多了一层maintoolbar,导致使用this注册action时,事件无法跳过maintoolbar传递给mainwindow。

// install eventfilter
ui->mainToolBar->installEventFilter(this);
ui->action1->installEventFilter(this);
ui->action2->installEventFilter(this);

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if(obj == ui->mainToolBar) // 该事件能检测到
{
return false;
}
else if(obj == ui->action1) // 该事件检测不到,WHY??
{
return false;
}
else if(obj == ui->action2) //该事件检测不到,WHY??
{
return false;
}
else return QMainWindow::eventFilter(obj,event);
}
...全文
197 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin_gui 2016-03-23
  • 打赏
  • 举报
回复
问题已经解决,把action改成了toolbutton,可以实现mouse事件的检测了。 另外,关于action,当打开checkable之后,也可以检测到事件了,只是这样还是无法实现单次的press与release分开处理。所以,最终选择了toolbutton。
lin_gui 2016-03-22
  • 打赏
  • 举报
回复
自己顶一下, 查了一些资料,QAction应该是没法通过事件过滤器实现事件的检测。。

16,817

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧