找回密码
 立即注册
收起左侧

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

1
回复
4486
查看
[复制链接]
累计签到:3 天
连续签到:1 天
来源: 2016-3-22 14:54:33 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 qt_venus 于 2016-3-22 17:44 编辑

如题
环境: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);
}
回复

使用道具 举报

累计签到:3 天
连续签到:1 天
2016-3-23 14:08:36 显示全部楼层
本帖最后由 qt_venus 于 2016-3-23 14:13 编辑

问题已经解决,把action改成了toolbutton,可以实现mouse事件的检测了。 另外,关于action,当打开checkable之后,也可以检测到事件了,只是这样还是无法实现单次的press与release分开处理。所以,最终选择了toolbutton。

PS:QT designer还是不太完善,toolbar上面只能拖入action,不能拖入toolbutton,这个比较郁闷。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了