Qt的clicked()触发,累加?额不太懂

PPPPPPi_ 2017-02-13 03:09:11
下面的考场部分先不用看,还没写代码,主要是上面的学生表部分,两个按钮:cTablePushButtonA和cTablePushButtonB

clicked()连接的是确定按钮,第一次响应正常,就是说程序进入,第一次触发clicked()信号会连接我的槽函数,成功执行我的槽函数,无论是提示表名不能为空或者是新建表成功都正常,然后关闭QMessageBox框重回到这个界面,代码如下:
主函数先调用initUi()函数进行初始化,然后点击新建...按钮开始新建表的部分,新建...之后LineEdit和确定按钮是可以写和点击的了,点击确定按钮连接槽函数cTablePushButtonB()。

问题:重新回到这个界面,再次点击新建,点确定还是执行我的cTablePushButtonB的函数,但是QMassageBox的框就要点击两次才能关闭,比如说点新建...,然后LineEdit为空,就是跳出QMessageBox显示表名不能为空,点一次OK关闭又迅速跳出一次提示表名不能为空,再次关闭才可以。第三次点击新建就会有三次QMessageBox的跳出,第四次就会有四次跳出。
如果我第二次点击新建且LineEdit不为空,就会跳出QMessageBox提示新建表成功,点OK关闭之后就是迅速又跳出QMessageBox又是提示表名不能为空,就好像是循环执行了我的槽函数,而且是次数累加的,为什么???
不太懂是哪里出现了问题
...全文
946 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
PPPPPPi_ 2017-02-13
  • 打赏
  • 举报
回复
引用 2 楼 chenlingzhen 的回复:
你在on_clicked这样的槽函数中绑定了信号槽,这样每次执行这个函数都会再绑定一次信号槽,所以会出现多次,你会发现你点ok的次数越多,弹出messagebox的次数越多,两种方法把connect放到构造函数中, 另一种加绑定类型为Qt::uniqueConnection,这样只会绑定一次
谢谢 我是新学的 您的回答解决了我的问题
clz2012 2017-02-13
  • 打赏
  • 举报
回复 1
你在on_clicked这样的槽函数中绑定了信号槽,这样每次执行这个函数都会再绑定一次信号槽,所以会出现多次,你会发现你点ok的次数越多,弹出messagebox的次数越多,两种方法把connect放到构造函数中, 另一种加绑定类型为Qt::uniqueConnection,这样只会绑定一次
  • 打赏
  • 举报
回复
把你的信号连接放在构造函数中试试

16,216

社区成员

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

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