qt lineedit_个人总结学生

qt lineedit_个人总结学生QLineEdit是一个单行文本编辑控件。使用者可以通过很多函数,输入和编辑单行文本,比如撤销、恢复、剪切、粘贴以及拖放等。通过改变QLineEdit的 echoMode() ,可以设置其属性,比如以密码的形式输入。文本的长度可以由 maxLength() 限制,可以通过使用 validator() 或者 inputMask() 可以限制它只能输入数字。在对同一个QLineEdit的validat…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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.setPlaceholderText()设置提示文字

qt lineedit_个人总结学生

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

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

 2.setEchoMode()设置模式

qt lineedit_个人总结学生

淘宝登录界面的一部分,用户名可以直接看到,密码一般都用小黑点掩盖。

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()对输入进行限制

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

qt lineedit_个人总结学生

比如上面的手机号输入框,控制其不能输入英文汉字等无关字符。

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()对输入进行限制

通过限制格式限制输入,具体怎么格式化可以参考Qt助手。

qt lineedit_个人总结学生

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;#"
);
    
}

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"
);

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

qt lineedit_个人总结学生

 

一些测试代码供参考——

头文件:

#ifndef WINDOW_H
#define WINDOW_H
 
#include <QWidget>
 
QT_BEGIN_NAMESPACE
class 
QComboBox;
class 
QLineEdit;
QT_END_NAMESPACE
 
//! [0]
class 
Window : 
public 
QWidget
{
    
Q_OBJECT
 
public
:
    
Window();
 
public 
slots:
    
void 
echoChanged(
int
);
    
void 
validatorChanged(
int
);
    
void 
alignmentChanged(
int
);
    
void 
inputMaskChanged(
int
);
    
void 
accessChanged(
int
);
 
private
:
    
QLineEdit *echoLineEdit;
    
QLineEdit *validatorLineEdit;
    
QLineEdit *alignmentLineEdit;
    
QLineEdit *inputMaskLineEdit;
    
QLineEdit *accessLineEdit;
};
//! [0]
 
#endif

 

实现:

#include <QtWidgets>
 
#include "window.h"
 
//! [0]
Window::Window()
{
    
QGroupBox *echoGroup = 
new 
QGroupBox(tr(
"Echo"
));
 
    
QLabel *echoLabel = 
new 
QLabel(tr(
"Mode:"
));
    
QComboBox *echoComboBox = 
new 
QComboBox;
    
echoComboBox->addItem(tr(
"Normal"
));
    
echoComboBox->addItem(tr(
"Password"
));
    
echoComboBox->addItem(tr(
"PasswordEchoOnEdit"
));
    
echoComboBox->addItem(tr(
"No Echo"
));
 
    
echoLineEdit = 
new 
QLineEdit;
    
//test
    
/*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");*/
 
    
//echoLineEdit->setMaxLength(9);
    
echoLineEdit->setPlaceholderText(
"电影、影人、影院、电视剧"
);
    
echoLineEdit->setFocus();
//! [0]
 
//! [1]
    
QGroupBox *validatorGroup = 
new 
QGroupBox(tr(
"Validator"
));
 
    
QLabel *validatorLabel = 
new 
QLabel(tr(
"Type:"
));
    
QComboBox *validatorComboBox = 
new 
QComboBox;
    
validatorComboBox->addItem(tr(
"No validator"
));
    
validatorComboBox->addItem(tr(
"Integer validator"
));
    
validatorComboBox->addItem(tr(
"Double validator"
));
 
    
validatorLineEdit = 
new 
QLineEdit;
    
validatorLineEdit->setPlaceholderText(
"Placeholder Text"
);
//! [1]
 
//! [2]
    
QGroupBox *alignmentGroup = 
new 
QGroupBox(tr(
"Alignment"
));
 
    
QLabel *alignmentLabel = 
new 
QLabel(tr(
"Type:"
));
    
QComboBox *alignmentComboBox = 
new 
QComboBox;
    
alignmentComboBox->addItem(tr(
"Left"
));
    
alignmentComboBox->addItem(tr(
"Centered"
));
    
alignmentComboBox->addItem(tr(
"Right"
));
 
    
alignmentLineEdit = 
new 
QLineEdit;
    
alignmentLineEdit->setPlaceholderText(
"Placeholder Text"
);
//! [2]
 
//! [3]
    
QGroupBox *inputMaskGroup = 
new 
QGroupBox(tr(
"Input mask"
));
 
    
QLabel *inputMaskLabel = 
new 
QLabel(tr(
"Type:"
));
    
QComboBox *inputMaskComboBox = 
new 
QComboBox;
    
inputMaskComboBox->addItem(tr(
"No mask"
));
    
inputMaskComboBox->addItem(tr(
"Phone number"
));
    
inputMaskComboBox->addItem(tr(
"ISO date"
));
    
inputMaskComboBox->addItem(tr(
"License key"
));
 
    
inputMaskLineEdit = 
new 
QLineEdit;
    
inputMaskLineEdit->setPlaceholderText(
"Placeholder Text"
);
//! [3]
 
//! [4]
    
QGroupBox *accessGroup = 
new 
QGroupBox(tr(
"Access"
));
 
    
QLabel *accessLabel = 
new 
QLabel(tr(
"Read-only:"
));
    
QComboBox *accessComboBox = 
new 
QComboBox;
    
accessComboBox->addItem(tr(
"False"
));
    
accessComboBox->addItem(tr(
"True"
));
 
    
accessLineEdit = 
new 
QLineEdit;
    
accessLineEdit->setPlaceholderText(
"Placeholder Text"
);
//! [4]
 
//! [5]
    
connect(echoComboBox, SIGNAL(activated(
int
)),
            
this
, SLOT(echoChanged(
int
)));
    
connect(validatorComboBox, SIGNAL(activated(
int
)),
            
this
, SLOT(validatorChanged(
int
)));
    
connect(alignmentComboBox, SIGNAL(activated(
int
)),
            
this
, SLOT(alignmentChanged(
int
)));
    
connect(inputMaskComboBox, SIGNAL(activated(
int
)),
            
this
, SLOT(inputMaskChanged(
int
)));
    
connect(accessComboBox, SIGNAL(activated(
int
)),
            
this
, SLOT(accessChanged(
int
)));
//! [5]
 
//! [6]
    
QGridLayout *echoLayout = 
new 
QGridLayout;
    
echoLayout->addWidget(echoLabel, 0, 0);
    
echoLayout->addWidget(echoComboBox, 0, 1);
    
echoLayout->addWidget(echoLineEdit, 1, 0, 1, 2);
    
echoGroup->setLayout(echoLayout);
//! [6]
 
//! [7]
    
QGridLayout *validatorLayout = 
new 
QGridLayout;
    
validatorLayout->addWidget(validatorLabel, 0, 0);
    
validatorLayout->addWidget(validatorComboBox, 0, 1);
    
validatorLayout->addWidget(validatorLineEdit, 1, 0, 1, 2);
    
validatorGroup->setLayout(validatorLayout);
 
    
QGridLayout *alignmentLayout = 
new 
QGridLayout;
    
alignmentLayout->addWidget(alignmentLabel, 0, 0);
    
alignmentLayout->addWidget(alignmentComboBox, 0, 1);
    
alignmentLayout->addWidget(alignmentLineEdit, 1, 0, 1, 2);
    
alignmentGroup-> setLayout(alignmentLayout);
 
    
QGridLayout *inputMaskLayout = 
new 
QGridLayout;
    
inputMaskLayout->addWidget(inputMaskLabel, 0, 0);
    
inputMaskLayout->addWidget(inputMaskComboBox, 0, 1);
    
inputMaskLayout->addWidget(inputMaskLineEdit, 1, 0, 1, 2);
    
inputMaskGroup->setLayout(inputMaskLayout);
 
    
QGridLayout *accessLayout = 
new 
QGridLayout;
    
accessLayout->addWidget(accessLabel, 0, 0);
    
accessLayout->addWidget(accessComboBox, 0, 1);
    
accessLayout->addWidget(accessLineEdit, 1, 0, 1, 2);
    
accessGroup->setLayout(accessLayout);
//! [7]
 
//! [8]
    
QGridLayout *layout = 
new 
QGridLayout;
    
layout->addWidget(echoGroup, 0, 0);
    
layout->addWidget(validatorGroup, 1, 0);
    
layout->addWidget(alignmentGroup, 2, 0);
    
layout->addWidget(inputMaskGroup, 0, 1);
    
layout->addWidget(accessGroup, 1, 1);
    
setLayout(layout);
 
    
setWindowTitle(tr(
"Line Edits"
));
}
//! [8]
 
//! [9]
void 
Window::echoChanged(
int 
index)
{
    
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);
    
}
}
//! [9]
 
//! [10]
void 
Window::validatorChanged(
int 
index)
{
    
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);
    
}
 
    
validatorLineEdit->clear();
}
//! [10]
 
//! [11]
void 
Window::alignmentChanged(
int 
index)
{
    
switch 
(index) {
    
case 
0:
        
alignmentLineEdit->setAlignment(Qt::AlignLeft);
        
break
;
    
case 
1:
        
alignmentLineEdit->setAlignment(Qt::AlignCenter);
        
break
;
    
case 
2:
        
alignmentLineEdit->setAlignment(Qt::AlignRight);
    
}
}
//! [11]
 
//! [12]
void 
Window::inputMaskChanged(
int 
index)
{
    
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;#"
);
    
}
}
//! [12]
 
//! [13]
void 
Window::accessChanged(
int 
index)
{
    
switch 
(index) {
    
case 
0:
        
accessLineEdit->setReadOnly(
false
);
        
break
;
    
case 
1:
        
accessLineEdit->setReadOnly(
true
);
    
}
}
//! [13]

  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185347.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm社区版安装步骤_pycharm安装教程2020社区版

    pycharm社区版安装步骤_pycharm安装教程2020社区版一、PyCharm的安装和配置1.1PyCharm社区版的安裝(windows系统)1.1.1、查看电脑配置:点击我的电脑右键选择属性![在这里插入图片描述](https://img-blog.csdnimg.cn/20201027105320621.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text…

    2022年8月27日
  • 安卓 自定义分辨率_android图片适配不同分辨率

    安卓 自定义分辨率_android图片适配不同分辨率Bluestacks是一款非常好用的电脑上的安卓模拟器,用Bluestacks来玩手机游戏是不少朋友的选择,但是Bluestacks默认分辨率都非常大,比如小编的默认分辨率就达到了1280*720。运行Bluestacks后,不仅字和图标很小,打开游戏、软件都显得很模糊,但是安卓界面本身又很大,好多空白的地方。那么多大的分辨率才合适呢?Bluestacks分辨率修改方法1.Bluestacks的合…

    2022年8月13日
  • Qt Quick之Canvas

    QML中的Canvas,俗称画布,它用来定义一个绘图区域,可以使用ECMAScript代码来绘制直线,矩形,贝塞尔曲线,弧线,图片,文字等图元,还可以为这些图元应用填充颜色和边框颜色,甚至还可以进行低

    2021年12月29日
  • python suds_python suds 一坑

    python suds_python suds 一坑当被调用服务的返回xml内容值不是按照wsdl文件描述定义的,就莫名奇妙返回suds.WebFault没有更多详细信息!于是将源码解压,并插入到sys.path[0],通过设置断点的方式找出非标准的返回报文到底在说啥。从而调整对应参数。suds-0.4/suds/bindings/binding.py(246~268)defget_fault(self,reply):”””Extract…

    2022年10月23日
  • 撸吧,你活不到明天了

    撸吧,你活不到明天了还记得PKAV上only_guest的那句话吗?还在撸?少年。删了LOL,拿起你的鼠标,跟我一起拯救世界!真心地也劝君一句:小撸怡情,大撸伤身,强撸灰飞烟灭-_-(当然,如果你自认为是小撸的话就

    2022年6月30日
  • JDK环境变量配置(win10)[通俗易懂]

    JDK环境变量配置(win10)[通俗易懂]前言对于每一位做Java开发人员来说,JDK是必须要安装的,安装好JDK,其实并没有结束,一般情况下还需要配置JDK的环境变量,给大家介绍一下如何在Win10下配置JDK,并检测是否配置成功。步骤使用Windows图标+R,快速打开“运行”操作界面,并输入cmd,回车确认。在命令行输入java–version;如果能显示java的版本信息,则表示不需要配置,下面的步骤也不需要了。打开系统环境变量配置的页面。具体操作是:打开开始菜单,找到“此电脑”,然后右键“更多”→“属性”。在弹出的页面,

    2022年7月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号