一个Qwidget A。里面有一个QStackedWidget。stackedWidget会控制显示很多QWdget
现在有一个需求。
我要在A上面过滤掉鼠标右键的Release事件、不论是点击子控件还是A本身还是stackedWidget。
在QWidget A上我安装了一个eventFilter
代码如下
bool AntsMenu::eventFilter(QObject *obj,QEvent *e)
{
if (obj == &menuWidget || obj == ui.label)
{
qDebug()<<"Class Name:"<<obj->metaObject()->className();
if (e->type() == QEvent::MouseButtonRelease)
{
qDebug()<<"Mouse Button Release!"<<AntsMenu::level;
QMouseEvent *eMouse = static_cast<QMouseEvent*>(e);
if (eMouse->button() == Qt::RightButton)
{
qDebug()<<"Mouse Right Button Release!"<<AntsMenu::level;
goBack();
return true;
}
}
}
return QWidget::eventFilter(obj,e);
}
点击到某些控件。。比如QComboBox,QlineEdit时,右键Release是不会打印的。。。。
难道eventFilter不能过滤率这个吗?
求解~~~
------解决方案--------------------
installfilter
------解决方案--------------------
你要的这些QComboBox,QlineEdit。installfilter木有哇?
------解决方案--------------------
你全都install一下啊~不install,QComboBox等控件的事件不会往上送到你的QStackedWidget。你的filter自然就不会捕获到事件啊。个人猜测。对了给我分
------解决方案--------------------
- C/C++ code
QList<QWidget *> widgets = menuWidget->findChildren<QWidget *>(); for (int i=0; i<widgets.size(); i++) { widgets[i]->installEventFilter(this); }
------解决方案--------------------