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

如图所示: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);
}这是为什么呢?
...全文
相关推荐
Qt EventFilter 事件过滤器 及传递 鼠标键盘事件捕捉
Qt EventFilter 事件过滤器 及传递 鼠标键盘事件捕捉; https://blog.csdn.net/q610098308/article/details/126302939
QT当中的connect+eventFilter函数全解
【1】 connect函数举例 【2】Q_SLOTS 【3】Q_SLOT 【4】Q_SIGNALS 【5】Q_SIGNAL 【6】Q_SET_OBJECT_NAME(Object) 【7】Q_OBJECT 【8】Q_GADGET 【9】Q_EMIT 【10】事件过滤器eventFilte函数
EventFilter
qt eventfilter演示
qt接金币小游戏,希望能帮到你!!
qt接金币小游戏。可以控制飞机变大和变小。左右移动流畅,图像清晰给力
QT Spinbox
通过重写虚函数实现功能的调换, 例子是Qspinbox


