QLineEdit 一个令人抓狂的应用场合

QLineEdit 功能强大的行文本编辑控件,大多数情况下用起来非常轻松方便。

 

这两天碰到了个特例,我需要在进行某些操作后,手动选中QLineEdit中的一个或一段文本,QLineEdit提供了如下函数:

void QLineEdit::setSelection ( int start, int length ), 从start指定的位置选中长度为length的文本,如果QLineEdit没有设置任何InputMask,这个函数随便怎么使用工作都非常正常

 

 

使用了InputMask后, 不断地点击按钮, start指定的位置围着ui->lineEdit->text().count()绕了一圈, “192.168.0.1”从来就没有选中过最后一个“1”

 

 

再试,还是没有选中过"192.168.0.1"的最后一个"1",怎么回事呢, 抓狂了很久才发现,ui->lineEdit的实际文本(text)是"192.168.0.1",而它显示和操作的文本(displayText)为"192.168.0  .1  ",也就是说QLineEdit在显示文本的时候会根据InputMask对实际文本进行填充补位,造成displayText的长度大于text的长度,而setSelection会用text的长度去检测start是否合法,如果start的值大于或等于text的长度, 会提示Invalid start position, 同时, 它选中displayText中start指定文本, 这样displayText超出的部分永远都选中不了, 这应该是QT的一个BUG

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值