qlineedit的editingfinished和loseFocus信号

风声边界 2011-04-06 03:20:42
qlineedit的editingfinished信号,手册上说在按下return或者enter键、或者失去焦点是会发送该信息

一般情况下应该是将eiditingfinished信号同相关槽连接就ok了,在编辑完成或者失去焦点时都能响应

现在的情况是 我关联了qlineedit的editingfinished信号


在编辑完成时我会判断qlineedit的数据是否合法,不合法,重新输入,此时是弹出一QMessageBox

输入非法时,点击消息框ok,重新输入,现在是QMessageBox会弹出两次,一次是点击回车时editingfinished 信号,触发槽函数,然后是qlineedit 失去焦点又一次触发槽函数,


有没有办法使得在这种情况下槽函数触发一次
1、屏蔽loseFocus()信号肯定不行,在仅仅是失去焦点时我还要触发槽函数
2、不关联editingfinished信号也不行,要响应回车键
3、输入非法时还要提示用户 输入非法(消息框)

有点难搞
...全文
2023 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
风声边界 2011-04-06
  • 打赏
  • 举报
回复
我说的输入非法,不是指一个"正则表达式”或者是一个掩码或者常量的东东
只有你在编辑完成后才会进一步判断和处理
,可能我没有说清楚,
thank you all the same
风声边界 2011-04-06
  • 打赏
  • 举报
回复
我尝试使用returnPressed()能够替代editingfinished,倒是可以
但是textChanged()信号不行啊 ,我在编辑qlineedit的时候,没键入一个字符就会弹出一次消息框
zhh_kv 2011-04-06
  • 打赏
  • 举报
回复
利用textChanged ( const QString & text ) 信号和returnPressed ()信号,应该可以达到你想要的效果

16,211

社区成员

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

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