• 12766阅读
  • 5回复

[提问]Qt中如何实现输入密码的时候先显示一会数字,过一会在显示为星号 [复制链接]

上一主题 下一主题
离线zheguzai
 

只看楼主 倒序阅读 楼主  发表于: 2013-09-16
如题所示,在输入密码的时候怎么实现刚输入的时候显示数字,过2-3秒后变为星号,就想手机上面输入密码一样
有人做过这样的功能么?
离线似水流年

只看该作者 1楼 发表于: 2013-09-16
设置输入模式为:QLineEdit::PasswordEchoOnEdit

EchoMode    echoMode() const
void    setEchoMode(EchoMode)

只看该作者 2楼 发表于: 2013-09-16
学习学习,解决了不
离线zheguzai

只看该作者 3楼 发表于: 2013-09-17
按照二楼的方法我试验了下,讲文本框的模式设置为PasswordEchoOnEdit模式

ui->lineEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);

就上面这一句,编译后输入的时候在lineEdit获得焦点的时候,输入的密码全部能看见,当lineEdit中失去焦点的时候(也就是LineEdit中的光标不见了),才会全部显示为星号,这与我之前想的还是有些区别的。

我原来想做的是输入一个字符的时候刚开始显示出来,过2-3秒后才显示为星号,就跟苹果或者安卓系统上面输入密码的时候一样,不知道还有其他方法没有,还是谢谢二楼的方法
离线0354030w

只看该作者 4楼 发表于: 2013-09-17
有个比较傻逼额办法!自己派生一个QLineEdit,在派生类里面处理一下KeyPressEvent,发现有新的输入,启动一个定时器,时间到了就显示*,析构该定时器
离线dwhome

只看该作者 5楼 发表于: 2013-09-17
回 4楼(0354030w) 的帖子
timer->stop();timer->stop();用定时器不傻。可以改进一下:

connect(LineEdit, SIGNAL(textChanged(const QString &), this, SLOT(sltDsplyLast(const QString &)));
connect(timer, SIGNAL(timeout()), this, SLOT(sltDsplyStar()));
timer->setInterval(2000);

在槽sltDsplyLast(const QString &)中,
timer->stop();
显示最后一个字符,其他显示星号;
然后timer->start();

在槽sltDsplyStar()中,
timer->stop();
全部显示星号

快速回复
限100 字节
 
上一个 下一个