遇到个Qt中eventFilter的问题,希望大家给点建议,谢谢。

Henryinferno Henryinferno 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

如图所示:MyToolBox就是这个聊天列表,QToolButton就是每个用户的头像的按钮。我在MyToolBox中安装了QToolButton的过滤器toolBtn[i]->installEventFilter(this);//toolBtn的点击事件由toolbox1来处理。
下面这段代码能正常实现功能,即点击用户头像弹出聊天对话框:
bool MyToolBox::eventFilter(QObject *watched, QEvent *event)
{
if(event->type() == QEvent::MouseButtonPress)//如果是鼠标按键信号
{
int i = watched->objectName().toInt();
qDebug()<<"clicked";
child[i]->hide();
child[i]->showNormal();//将toolbtn下对应的child显示到屏幕
}
return QToolBox::eventFilter(watched, event);//其他信号交给父类进行默认处理
}

然而我想只过滤鼠标左击和右击事件,下面代码完全无法响应任何鼠标事件:
bool MyToolBox::eventFilter(QObject *watched, QMouseEvent *event)
{
if(event->button()==Qt::LeftButton)
{
int i=watched->objectName().toInt();
qDebug()<<"clicked";
child[i]->hide();
child[i]->showNormal();
}
else if(event->button()==Qt::RightButton)
{
_menu=new QMenu();
_menu->addAction(QString().fromLocal8Bit("&查看用户信息"));
}
return QToolBox::eventFilter(watched,event);
}

这是为什么呢?
...全文
评论 9
收藏 已收藏
分享
返回顶部
Henryinferno
Qt 21,503 成员 26,693 内容