QtQLineEdit输入框
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()信号将会发出。
以上是Qt官方文档对QLineEdit的简要说明,下面对一些常用的方法作说明:
回到顶部 1.QLineEdit 接收用户输入
QLineEdit 继承自 QWidget 基类
显示模式
显示模式
效果
QLineEdit::Normal
正常显示
QLineEdit::NoEcho
不显示
QLineEdit::Password
密码显示
QLineEdit::PasswordEchoOnEdit
编辑时候正常显示,其他密码显示
2. QLineEdit 掩码字符 inputMask
对用户的输入进行一些限制
如:
> 输入转换为大写,
Aa 头两个必须输入为字母,a 第二个字母可以为空格
-分隔符
90 第三第四个可以为数字,0 第四个数字可以为空
-分隔符
< 输入转换为小写
AA 两个不能为空格的字母,
-分隔符,
!取消大小写转换
aaa 三个可以为空格的字母位,
! 转义分隔符,转义后这里的 ! 为分隔符
HH 为16进制符
字符(必须输入)字符(可留空)含义
Nn只能输入A-Z,a-z,0~9
Xx可以输入任意字符
90只能输入0-9
Dd只能输入1-9
#只能输入 +, -, 0-9
Hh只能输入十六进制字符 (0-9,a-f,A-F)
Bb只能输入二进制字符(0,1)
>后面的字母字符自动转换为大写
>后面的字母字符自动转换为小写
!停止字母字符的大小写转换
将该表中的特殊字符正常显示用作分隔符
QPushButton 按钮类,常用显示文字、图标。
QRadioButton 单选按钮类,只能选一个,当将单选按钮加入一个分组框中时,加入的按钮便是一个分组,分组中只能选中一个,具有排他性。QCheckBox是多选按钮类,可多选。 3. setPlaceholderText()设置提示文字
豆瓣电影的搜索输入框,没有输入任何字符时,显示"电影、影人、影院、电视剧"这些占位文字,对用户输入作相关提示。
点击领取Qt学习资料+视频教程~「链接」
4. 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); }5. setAlignment()设置文本位置switch (index) { case 0: alignmentLineEdit->setAlignment(Qt::AlignLeft); break ; case 1: alignmentLineEdit->setAlignment(Qt::AlignCenter); break ; case 2: alignmentLineEdit->setAlignment(Qt::AlignRight); }6. setReadOnly()设置能否编辑switch (index) { case 0: accessLineEdit->setReadOnly( false ); break ; case 1: accessLineEdit->setReadOnly( true ); }7. 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); }8. setInputMask()对输入进行限制
通过限制格式限制输入,具体怎么格式化可以参考Qt助手。
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;#" ); }9. setMaxLength()设置可以输入的最多字符数//最多只能输入9个字符 echoLineEdit->setMaxLength(9);10. 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" );
如果不控制输入,那么必须在输入后检查输入是否合法,但控制输入后的输入肯定是合法的,可以省去检查合法的繁琐步骤。只需使用正则表达式控制输入的度分秒范围,然后控制输入的格式。
点击领取Qt学习资料+视频教程~「链接」
亿万富翁梦碎,一个非典型县城中年男人的投资人生头条创作挑战赛天下网商吴羚玮编辑徐艺婷生于20世纪60年代末的老高,是非典型的县城中年男人。之所以这么称呼,是因为他曾是拔尖儿那撮中的一个。这是周围很多人的共识。这份共识来自于他的
从28到82一组数字背后的钢企转型视频加载中作为中国宝武太钢集团的子公司,山西太钢不锈钢精密带钢有限公司在建厂之初,主要产品以传统钢种为主。然而随着民营企业的快速发展,传统钢种竞争激烈,公司也不可避免地出现一定程度
遇见同学了观战大学女篮比赛时5年级小学生向库里发问直播吧2月23日讯近日,库里去到了斯坦福大学女篮的主场看球。场边,一位叫InesHill的11岁5年级小学生采访了库里。立志成为一名体育记者的Hill向库里提问女子篮球比赛对你来说
姑娘开着奥迪,有水滴在脚上?尹女士有辆奥迪汽车,入手两年多,车内多次发现渗水情况,说是每次情况还都不一样。1818黄金眼奥迪两年来三次渗水,每次情况还不一样?这辆灰色奥迪Q3汽车,是尹女士在2020年下半年购
俄乌战争即将一周年之际美国总统拜登20日突然访问乌克兰首都基辅,表达对乌克兰的支持。在当地时间2月21日,中共中央政治局委员中央外事工作委员会办公室主任王毅到访莫斯科。在俄乌战争即将一周年之际,中美两国
我的试管减肥路终喜迎宝宝2021年初试管移植,50多天的时候胎停,没有了胎心,第一次失败,将近7个月后第二次移植成功已有9月女宝一个。第一次移植失败后,我总结了自身失败的原因,自己有子宫腺肌症和多囊比较胖
烟台黄渤海新区民俗文化童传承龙抬头,吉祥头,快来牵着平安走,龙抬头,如意头,身体健康没忧愁。龙抬头,吉祥如意好彩头。2月21日,走进烟台黄渤海新区大季家街道中心幼儿园恒祥园,孩子们一边哼唱着歌谣,一边挥舞着自
为童心打造森林童趣森林给孩子的自然故事。读这本画册,经常会有一种感动的情绪蓬勃心中。这本书的作者并不是专业作家和摄影师,他们是动植物保护一线的知识分子,他们有自己的繁忙的本职工作。他们是在陪伴自
婴配粉新国标今日落地,清退效果未明但配方大战已无悬念2月22日,婴幼儿配方奶粉新国标结束了新政缓冲期,正式落地生效,不符合新国标的产品将被禁止生产。截至最新,已有31家奶粉企业112个品牌拿到参与下一轮市场竞争的门票,后续仍有部分企
美国洛克希德。马丁公司洛克希德马丁公司,全称洛克希德马丁空间系统公司(英语LockheedMartinSpaceSystemsCompany,简称LMT),前身是洛克西德公司(LockheedCorpo
西媒美国内反对撒钱援乌声浪渐高据西班牙世界报网站2月20日报道,在俄乌冲突爆发一周年之际,美国总统拜登秘密抵达基辅,传递一种团结的信息。报道称,这场冲突至今还没有结束的迹象,也没有明显的赢家,而美国总统冒着风险