zoukankan      html  css  js  c++  java
  • Qt自定义密码框,先显示后隐藏(继承以后改写slot即可,即与哪个相近就改写哪个)good

            现在很多应用在密码输入时,会先显示一段时间,大概几百毫秒,然后再变成星号或者圆点隐藏起来。这样做的好处是,可以让密码输入者看到自己输入的字符,同时又防止密码被偷窥。但是Qt自带的密码输入框,要么输入时立即变成圆点,要么全部输入完后再一起变成圆点。

           要实现先显示后隐藏的效果其实很简单,只需重载QLineEdit类,然后在连接光标位置变化信号(cursorPositionChanged)和文本编辑信号(textEdited)的槽中做相应的处理。这两个信号对应的槽函数如下所示。

    [cpp] view plain copy
     
    1. void QPasswordLineEdit::slotTextEdited(const QString& text)  
    2. {  
    3.     if(text.count()>mLastCharCount)//输入  
    4.     {  
    5.         mLineEditText.append(text.right(1));  
    6.     }  
    7.     else if(text.count()<mLastCharCount)//删除  
    8.     {  
    9.         mLineEditText.remove(mLineEditText.count()-1,1);  
    10.     }  
    11.     mLastCharCount = mLineEditText.count();  
    12. }  

            当文本框的字符串长度大于之前保存的字符串的长度,说明正在输入,并将输入的这一个字符保存到全局变量mLineEditText中;当文本框的字符串长度小于之前保存的字符串长度,说明正在删除,并从全局变量mLineEditText中去掉最近输入的那个字符。

    [cpp] view plain copy
     
    1. void QPasswordLineEdit::slotCursorPositionChanged(int oldPos,int newPos)  
    2. {  
    3.     if(oldPos>=-1 && newPos>=0 )  
    4.     {  
    5.         if(newPos>oldPos)  
    6.         {  
    7.            QTimer::singleShot(mTimeout,this,SLOT(slotDisplayMaskPassword()));  
    8.         }  
    9.         else  
    10.         {  
    11.             this->setCursorPosition(oldPos);  
    12.         }  
    13.     }  
    14. }  

               当输入字符时,光标的位置会变化,每变化一次就会在mTimeout毫秒后执行slotDisplayMaskPassword函数,该函数将文本框中的所有字符都变成星号,这样给人的感觉就是输入的字符是先显示mTimeout毫秒后再变成星号的。

            效果如下图所示,"打印密码"按钮用于调试时打印输入的密码。



    源码链接:http://download.csdn.net/detail/caoshangpa/9472305

    http://blog.csdn.net/caoshangpa/article/details/50978164

  • 相关阅读:
    网络中有三种通讯模式:单播、广播、组播(多播)
    chmod命令
    linux bash 命令重定向和多命令执行
    linux中管道符“|”的作用
    web测试常用的 linux 命令
    集群主要分成三大类 (高可用集群, 负载均衡集群,科学计算集群)
    iOS 监测电话呼入
    iOS NSUserDefaults [setValue:forKey:] [setObject:forKey:] <Objc> setValue(_,forKey:) set(_,forKey) <Swift 3>
    iOS 将navigationItem.titleView设置为自定义UISearchBar (Ficow实例讲解)
    iOS 加载Viewcontroller的几种方法
  • 原文地址:https://www.cnblogs.com/findumars/p/8196560.html
Copyright © 2011-2022 走看看