我把return QWidget::eventFilter(obj,event); 这行注释了,直接改成return true; 为什么lineEdit的行编辑框在界面上都不显示了。
因为lineEdit想要显示在界面上,需要QWidget::eventFilter函数做相关反应,
例如:我现在想要 lineEdit 里面按 *** Q *** 往里面写Tensent
那么我就可以在里面检测:
如果是按键事件,且按键为 Q
,我就 lineEdit.append("Tensent");
,同理你想要它显示在界面上,那么就需要它调用QWidget::eventFilter
函数让他执行奥
return true; 代表这个事件,你已经处理成功,且被消费了,不会再往上传递。
你在eventFilter都返回true,代表控件接收的所有事件都是你自己处理,包括绘制事件等,但是实际上你并没有处理,所以界面上也不会paint lineedit了
用return QWidget::eventFilter(obj,event); 是把事件返回到上层处理,你在eventFilter中只关注点击事件,其余原路返回就没问题了