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); }
相关文章推荐
- QT自动打包依赖dll
- Qt中字符编码问题-1
- Qt 学习之路:线程总结
- Qt 在VS下设置exe图标
- QT4.8.4+DirectFB1.4.3
- Qt 学习之路 :Qt 线程相关类
- Qt 学习之路:线程和事件循环
- Qt 学习之路 :线程简介
- Qt 学习之路 :进程间通信
- QT QSerialPort类使用时连接出错(VS)
- Qt 模块简介
- Qt 模块简介
- Qt 学习之路 :自定义只读模型
- Qt 学习之路:QSortFilterProxyModel
- Qt 学习之路 :可视化显示数据库数据
- Qt 学习之路:QFileSystemModel
- Qt 学习之路:视图选择 (QItemSelectionModel)
- Qt 学习之路 :Qt 绘制系统简介
- Qt 学习之路 :事件
- QtScript