版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/zhenyu5211314/article/details/27201043

问题RT,在程序中我使用了QT的监听事件,监听鼠标的位置,假设鼠标在button上就改变button的ICON,可是在Release版本号中(Debug版本号没问题)。这些被监听的button都看不见了,于是開始了寻找答案的道路。

闲话少叙,直接上码:

void MainHomeForm::init()
{
//为button注冊事件
ui->SystemSetButton->installEventFilter(this);
ui->ZoneSetButton->installEventFilter(this);
}
//系统监听器监听button对象
bool MainHomeForm::eventFilter(QObject *target, QEvent *e)
{
if(target == ui->SystemSetButton)
{
if(e->type() == QEvent::Enter)
{
ui->SystemSetButton->resize(163,91);
ui->SystemSetButton->setIcon(QIcon(":/new/prefix1/back/系统设置2.png"));
}
else if(e->type() == QEvent::Leave)
{
ui->SystemSetButton->resize(115,60);
ui->SystemSetButton->setIcon(QIcon(":/new/prefix1/back/系统设置.png"));
}
}
else if(target == ui->ZoneSetButton)
{
if(e->type() == QEvent::Enter)
{
ui->ZoneSetButton->resize(163,91);
ui->ZoneSetButton->setIcon(QIcon(":/new/prefix1/back/区域控制2.png"));
}
else if(e->type() == QEvent::Leave)
{
ui->ZoneSetButton->resize(115,60);
ui->ZoneSetButton->setIcon(QIcon(":/new/prefix1/back/区域控制.png"));
}
}
}

想法一:显示不了button图片,应该是图片的路径问题吧,于是使用在Release路径下加入imageformats目录,还是不行

想法二:我发现button都点不了了,那应该不是图片的路径问题了,直接出在button上,果断凝视了为button注冊事件的两句话,发现Release后button显示了

发现程序中我忽略了这么一个Warning:

哦,之前一直忽略了。原来是由于eventFilter这个函数我没给返回值,那我给一个好了

返回FALSE吧,发现button还是不见

返回TRUE吧,发现button可见了

预測:应该是返回值影响了button是否可见吧

终于解决的方法:EventFilter要返回True哦

QT中使用Event Filter监听button事件,Release后button不见的更多相关文章

  1. 【Layui__监听button】在form中监听按钮事件

    1. 前言 在使用form表单的按钮时,点击按钮总是页面刷新,代码如下 <button class="layui-btn" lay-submit lay-filter=&qu ...

  2. JS 中的事件绑定、事件监听、事件委托

    事件绑定 要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有 ...

  3. JS 中的事件绑定、事件监听、事件委托是什么?

    在JavaScript的学习中,我们经常会遇到JavaScript的事件机制,例如,事件绑定.事件监听.事件委托(事件代理)等.这些名词是什么意思呢,有什么作用呢? 事件绑定 要想让 JavaScri ...

  4. 在Javascript中监听flash事件(转)

    在Javascript中监听flash事件,其实有两种做法: 1.在特定的环境下(例如专门制作的flash),大家约定一个全局函数,然后在flash的事件中用ExternalInterface.cal ...

  5. Fragment中监听onKey事件,没你想象的那么难。

    项目中越来越多的用到Fragment,在用Fragment取代TabHost的时候遇到了一个问题,我们都知道,TabHost的Tab为Activity实例,有OnKey事件,但是Fragment中没有 ...

  6. wemall app商城源码Fragment中监听onKey事件

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发Fragment中监听onK ...

  7. Qt实现小功能之列表无限加载(创意很不错:监听滚动条事件,到底部的时候再new QListWidgetItem)

    概念介绍 无限加载与瀑布流的结合在Web前端开发中的效果非常新颖,对于网页内容具备较好的表现形式.无限加载并没有一次性将内容全部加载进来,而是通过监听滚动条事件来刷新内容的.当用户往下拖动滚动条或使用 ...

  8. JS 事件绑定、事件监听、事件委托详细介绍

    原:http://www.jb51.net/article/93752.htm 在JavaScript的学习中,我们经常会遇到JavaScript的事件机制,例如,事件绑定.事件监听.事件委托(事件代 ...

  9. [JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播

    -->事件冒泡和捕获-->事件监听-->阻止事件传播 一.事件冒泡和捕获 1.概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的oncl ...

随机推荐

  1. 【leetcode】1124. Longest Well-Performing Interval

    题目如下: We are given hours, a list of the number of hours worked per day for a given employee. A day i ...

  2. LTE系统时延及降低空口时延的4种方案

    转载:https://rf.eefocus.com/article/id-LTE%20delay 对于移动通信业务而言,最重要的时延是端到端时延, 即对于已经建立连接的收发两端,数据包从发送端产生,到 ...

  3. 数组对象去重 reduce()

    let log = console.log.bind(console); let person = [ {id: 0, name: "小明"}, {id: 1, name: &qu ...

  4. 交互输入与for语句

    交互输入与for语句 1.   交互输入 read命令可以同时定义多个变量值:输入的内容默认以空格为分隔符,将值输入到对应的变量中:read尽量避免交互 如果默认值过多,最后所有的值会被赋予给最有一个 ...

  5. docker for windows 中挂载文件到容器

    docker for windows版本: 宿主机:windows10 场景: 容器是基于microsoft/donet的webapi 想把宿主机的文件挂载到容器中,比方说:a.txt 命令如下: d ...

  6. mysql UNION操作符 语法

    mysql UNION操作符 语法 作用:用于合并两个或多个 SELECT 语句的结果集. 语法:SELECT column_name(s) FROM table_name1 UNION SELECT ...

  7. BZOJ 2288: 【POJ Challenge】生日礼物 贪心 + 堆 + 链表

    好像是模拟费用流 Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r" ...

  8. layer.confirm

    layer.confirm('确定不选择花车?', { title: false, btn: ['确定','取消'] //按钮 }, function(ind){ layer.close(ind); ...

  9. Internet History, Technology, and Security(week8)——Security: Encrypting and Signing

    Hiding Date from Ohters Security Introduction Alice and Bob是密码学.博弈论.物理学等领域中的通用角色之一.Alice(代表A)和Bob(代表 ...

  10. spring学习笔记之---JDBC Template

    JDBC  Template(简化持久化操作) (一)创建项目 (1)Maven配置 <dependencies> <dependency> <groupId>ju ...