您的位置:首页 > 编程语言 > Qt开发

Qt 事件过滤器问题

2015-09-15 15:13 471 查看
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
this->resize(80,22);

this->button =new QPushButton("laowang");
this->lineEdit=new QLineEdit;

this->button->installEventFilter(this);
this->lineEdit->installEventFilter(this);

QHBoxLayout *layout=new QHBoxLayout(this);
layout->addWidget(this->button);
layout->addWidget(this->lineEdit);
}


我在使用Qt的事件过滤器时,

在widget中使用重写了函数

bool eventFilter(QObject *obj, QEvent *event);


在Widget的构造函数中button和lineEdit安装事件过滤器,
运行之后发现,button和lineEdit不能显示。

不知道什么原因,求指教。

---------------------------------------------

解决方法:

经过我不断写例子测试,终于找到问题所在,

bool eventFilter(QObject *obj, QEvent *event);


我在重写eventFilter这个事件函数的时候,对于事件循环的概念理解不深,

当判断语句结束的时候,返回时没有添加return QWidget::eventFilter(o,e);
造成事件循环不能流畅。

bool Widget::eventFilter(QObject *o, QEvent *e)
{
qDebug()<<"eventFilter--";
if(o=this->button)
{
if(e->type()==QEvent::MouseButtonPress)
{
qDebug()<<"eventFilter--button mousePress--";
}
}
else
return QWidget::eventFilter(o,e);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: