Qt按钮使用事件过滤器后就消失了

liu4791 2018-12-25 10:54:54
if(target==ui->pb_work){
if(e->type()==QEvent::MouseButtonPress){
char sendMessage2[] = "<set><var>.Key_WorkClamp</var><val>1</val></set>\n";
sock->write(sendMessage2);
sock->flush();
readServer1();
}
if(e->type()==QEvent::MouseButtonRelease){
char sendMessage2[] = "<set><var>.Key_WorkClamp</var><val>0</val></set>\n";
sock->write(sendMessage2);
sock->flush();
readServer1();
}
因为按钮较多,代码都是重复的,所以只贴了这部分,
也ui->pb_work->installEventFilter(this);代码运行没有问题,但是界面里这个按钮看不见形状,但是在按钮大概的位置上点击的话,我用于检测的qDebug()是有输出的,也就是说功能可以实现,但是按钮不见了,我试过不ui->pb_work->installEventFilter(this),按钮就又出现了。
...全文
472 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复 1
bool Widget::eventFilter(QObject *obj, QEvent *event) 的返回值不能是true,否则会导致不显示情况。 具体情况可能是调用到基类的事件过滤器了。 修改办法可以是返回值为false。 或者使用这种写法return QWidget::eventFilter(obj, event);
fearlazy 2019-09-20
  • 打赏
  • 举报
回复
只过滤了鼠标事件,其他事件都让你丢了
被木马隐藏的 2019-06-22
  • 打赏
  • 举报
回复
可能是在eventFilter最后没有返回
return QWidget::eventFilter(target, event);

弓人水 2018-12-26
  • 打赏
  • 举报
回复
上面贴出的代码看不出问题,过滤器和看不到按钮,从这两个关键字可以猜测是因为eventFilter里面出了问题,很有可能paintEvent被过滤掉了,所以无法绘制出按钮控件。
可以把eventFilter贴出来分析下。

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧