点击一次pushButton会对相应的slot执行两次
2013-01-07 12:54
246 查看
分析原因:
1,使用了可视化设计器设计UI,(RAD方式是高效和协作的一种有效手段)
2,在设计器中设置了signal和slot
3,slot函数采用了on_对象名_signal名的规则或者在代码中显示connect了不是这种规则的函数
要查为什么触发两次,要打开ui文件对应的c++代码,里面有这么一句:
QObject::connect(pushButton, SIGNAL(clicked()), QtApp1Class, SLOT(on_pushButton_clicked()));
这句代码产生是因为手工进行了signal和slot的设置,
并且该slot符合QT信号-槽默认的连接规则,所以相当与有两句
QObject::connect(pushButton, SIGNAL(clicked()), QtApp1Class, SLOT(on_pushButton_clicked()));
即,这对信号-槽进行了两次连接,所以会点击一次pushButton会出现两次slot函数on_pushButton_clicked()的调用。
解决方案:
A:如果使用设计器进行信号-槽的连接,就要注意函数名不要使用QT默认连接规则,也不要再自行对信号和槽进行连接。
B:不采用设计器进行信号-槽连接,避免不同VS add-in的生成不同,QTCreater和VS add-in的生成规则不同,采用手工连接。
推荐采用手工连接方式。不会出现意想不到的问题。
1,使用了可视化设计器设计UI,(RAD方式是高效和协作的一种有效手段)
2,在设计器中设置了signal和slot
3,slot函数采用了on_对象名_signal名的规则或者在代码中显示connect了不是这种规则的函数
要查为什么触发两次,要打开ui文件对应的c++代码,里面有这么一句:
QObject::connect(pushButton, SIGNAL(clicked()), QtApp1Class, SLOT(on_pushButton_clicked()));
这句代码产生是因为手工进行了signal和slot的设置,
并且该slot符合QT信号-槽默认的连接规则,所以相当与有两句
QObject::connect(pushButton, SIGNAL(clicked()), QtApp1Class, SLOT(on_pushButton_clicked()));
即,这对信号-槽进行了两次连接,所以会点击一次pushButton会出现两次slot函数on_pushButton_clicked()的调用。
解决方案:
A:如果使用设计器进行信号-槽的连接,就要注意函数名不要使用QT默认连接规则,也不要再自行对信号和槽进行连接。
B:不采用设计器进行信号-槽连接,避免不同VS add-in的生成不同,QTCreater和VS add-in的生成规则不同,采用手工连接。
推荐采用手工连接方式。不会出现意想不到的问题。
相关文章推荐
- 按钮点击不起作用和点击一次执行两次问题解决
- iscroll iscrollview 与jquerymobile集成时,滚动区域点击一次执行两次点击事件的解决方案
- jquery click点击一次执行两次解决方法
- js点击事件绑定一次,但是点击却执行了多次
- Jquery全选与反选点击执行一次的解决方案
- IE下同样的$.ajax()被调用两次,只能执行一次(第一次)
- 一次请求执行两次同一html页面
- vs2013版MFC按钮点击无反应,执行不到相应的事件处理程序
- 按钮的Ajax请求时一次点击两次提交的解决方法
- click事件点击一次,执行多次的问题
- jquery Click事件点击一次,执行多次原因之一
- <a>标签href属性和onclick()执行顺序及点击两次才跳转
- 一次请求 服务端执行两次
- 点击按钮一次,请求两次问题解决
- jQuery一段时间内点击 button只执行一次click事件
- (转载)js(jquery)的on绑定点击事件执行两次的解决办法
- JTabel选择表格事件监听时,用鼠标点击一次,会出现两次事件的原因。
- Spring mvc 一次请求Controller执行两次的问题
- 关于jquery中 的点击事件,每点一次执行的效果就叠加一次,click是添加点击事件的意思
- android修改软键盘的回车键为搜索键以及点击时执行两次监听事件的问题