Qt学习之QLineEdit使用总结

简介

QLineEdit是一个单行文本编辑控件。

使用者可以通过很多函数,输入和编辑单行文本,比如撤销、恢复、剪切、粘贴以及拖放等。

通过改变QLineEdit的 echoMode() ,可以设置其属性,比如以密码的形式输入。

文本的长度可以由 maxLength() 限制,可以通过使用 validator() 或者 inputMask() 可以限制它只能输入数字。在对同一个QLineEdit的validator或者input mask进行转换时,最好先将它的validator或者input mask清除,以避免错误发生。

与QLineEdit相关的一个类是QTextEdit,它允许多行文字以及富文本编辑。

我们可以使用 setText() 或者 insert() 改变其中的文本,通过 text() 获得文本,通过 displayText() 获得显示的文本,使用 setSelection() 或者 selectAll() 选中文本,选中的文本可以通过cut()、copy()、paste()进行剪切、复制和粘贴,使用 setAlignment() 设置文本的位置。

文本改变时会发出 textChanged() 信号;如果不是由setText()造成文本的改变,那么会发出textEdit()信号;鼠标光标改变时会发出cursorPostionChanged()信号;当返回键或者回车键按下时,会发出returnPressed()信号。

当编辑结束,或者LineEdit失去了焦点,或者当返回/回车键按下时,editFinished()信号将会发出。

用法实例

1.setPlaceholderText()设置提示文字

豆瓣电影的搜索输入框,没有输入任何字符时,显示“电影、影人、影院、电视剧”这些占位文字,对用户输入作相关提示。

echoLineEdit->setPlaceholderText( "电影、影人、影院、电视剧" );

2.setEchoMode()设置模式

switch  (index) {
     case  0:
         //默认,输入什么即显示什么
         echoLineEdit->setEchoMode(QLineEdit::Normal);
         break ;
     case  1:
         //密码,一般是用小黑点覆盖你所输入的字符
         echoLineEdit->setEchoMode(QLineEdit::Password);
         break ;
     case  2:
         //编辑时输入字符显示输入内容,否则用小黑点代替
         echoLineEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);
         break ;
     case  3:
         //任何输入都看不见(只是看不见,不是不能输入)
         echoLineEdit->setEchoMode(QLineEdit::NoEcho);
     }

3.setAlignment()设置文本位置

switch  (index) {
     case  0:
         alignmentLineEdit->setAlignment(Qt::AlignLeft);
         break ;
     case  1:
         alignmentLineEdit->setAlignment(Qt::AlignCenter);
         break ;
     case  2:
         alignmentLineEdit->setAlignment(Qt::AlignRight);
     }

4.setReadOnly()设置能否编辑

switch  (index) {
     case  0:
         accessLineEdit->setReadOnly( false );
         break ;
     case  1:
         accessLineEdit->setReadOnly( true );
     }

5.setValidator()对输入进行限制

这种方式的实质是通过正则表达式限制输入的内容。

switch  (index) {
     case  0:
         //无限制
         validatorLineEdit->setValidator(0);
         break ;
     case  1:
         //只能输入整数
         validatorLineEdit->setValidator( new  QIntValidator(
             validatorLineEdit));
         break ;
     case  2:
         //实例,只能输入-180到180之间的小数,小数点后最多两位(可用于限制经纬度等)
         QDoubleValidator *pDfValidator =  new  QDoubleValidator(-180.0, 180.0 , 2, validatorLineEdit);
         pDfValidator->setNotation(QDoubleValidator::StandardNotation);
         validatorLineEdit->setValidator(pDfValidator);
     }

6.setInputMask()对输入进行限制

switch  (index) {
     case  0:
         inputMaskLineEdit->setInputMask( "" );
         break ;
     case  1:
         inputMaskLineEdit->setInputMask( "+99 99 99 99 99;_" );
         break ;
     case  2:
         inputMaskLineEdit->setInputMask( "0000-00-00" );
         inputMaskLineEdit->setText( "00000000" );
         inputMaskLineEdit->setCursorPosition(0);
         break ;
     case  3:
         inputMaskLineEdit->setInputMask( ">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#" );

    }

A

ASCII字母字符是必须的,取值空间是A-Z,a-z

a

ASCII 字母字符是允许的但不是必须的.

N

ASCII字母字符是必须的. A-Z, a-z, 0-9.

n

ASCII 字母字符是允许的但不是必须的.

X

任何字符都可以,是必须需要的.

x

任何字符都允许的,但不是必须需要的.

9

ASCII 数字是必须要的. 0-9.

0

ASCII 数字是允许的,但不是必须要的.

D

ASCII  数字是必须要的. 1-9.

d

ASCII 数字是允许的,但不是必须要的 (1-9).

#

ASCII 数字是或加减符号允许的,但不是必须要的.

H

十六进制数据字符是必须要的. A-F, a-f, 0-9.

h

十六进制数据字符是允许的,但不是必须要的.

B

二进制数据字符是必须要的. 0-1.

b

二进制数据字符是允许的,但不是必须要的.

>

所有的字符字母都都大写的.

<

所有的字符字幕都是小写的.

!

关闭大小写.

\

使用 \ 去转义上面的字符,如果再需要显示上述字符的时候.


7.setMaxLength()设置可以输入的最多字符数

//最多只能输入9个字符
echoLineEdit->setMaxLength(9);

8.validator和inputmask的结合

比如纬度用“度:分:秒”的格式表示,分和秒的范围都是00-59,度的范围是-89到89。

QRegExp rx( "(-|\\+)?[0-8]\\d:[0-5]\\d:[0-5]\\d" );
echoLineEdit->setValidator( new  QRegExpValidator(rx, echoLineEdit));
echoLineEdit->setInputMask( "#00:00:00;0" );
echoLineEdit->setText( "+00:00:00" );

如果不控制输入,那么必须在输入后检查输入是否合法,但控制输入后的输入肯定是合法的,可以省去检查合法的繁琐步骤。只需使用正则表达式控制输入的度分秒范围,然后控制输入的格式。

http://www.cnblogs.com/hellovenus/p/5183593.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值