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]

  

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 记录关于微信开放平台扫码登录的问题「建议收藏」

    记录关于微信开放平台扫码登录的问题「建议收藏」1、开放平台扫码登录需要snsapi_login权限,此权限需要注册微信开放平台账号并完成交钱认证。2、添加网站应用,并等待审核通过。通过后会分配一个独立的appid和appsecret。3、网站应用的授权回调域名需要严格按照xxx.yyy.zz的顶级域名填写4、开发时的主要问题是redirect_uri这里:   A、此redirect_uri是微信回调域名,是可以接受请求的真实地址  …

  • emule最新服务器地址,emule更新服务器列表

    emule最新服务器地址,emule更新服务器列表《emule更新服务器列表》由会员分享,可在线阅读,更多相关《emule更新服务器列表(15页珍藏版)》请在人人文库网上搜索。1、emule是通过ED2K网络和KAD网络寻找、连接其他emule客户端的,所以服务器列表和KAD节点文件是emule的必需文件。有些新手由于下载官方原版emule压缩包或其他未集成这些必需文件的emule压缩包,从而出现“连接不上ED2K与KAD”问题。所以学会下载更新…

  • keil5 debug调试_java怎么远程调试

    keil5 debug调试_java怎么远程调试文章目录前言一、进入调试二、介绍调试工具栏二、搜索寻找三、特殊的窗口1.命令输出窗口2.寄存器窗口3.汇编语言窗口4.变量查看窗口5.检测自己想要看的总结前言其实我经常用的调试方法是在指定行加Printf();通过串口查看打印的信息,就知道执行到哪一步。但是这是很麻烦的。程序由上而下的执行顺序不会变的。debug调试也是从主函数开始这样调试的。一步一步的运行调试程序检查错误,或者直接运行到某处,二话不多说,开整!一、进入调试二、介绍调试工具栏1.复位按钮:(类似于用复位按键..

    2022年10月15日
  • mysql行转列转换

    mysql行转列转换mysql行列转换,在项目中应用的极其频繁,尤其是一些金融项目里的报表。其中最为头痛的就是多行转多列,动态的列行转换。最近在研究这些行里转换,还是从最为简单的行列转换开始。sql脚本–创建表学生表CREATETABLE`student`(`stuid`VARCHAR(16)NOTNULLCOMMENT’学号’,`stunm`VARCHAR(20

  • 关于Thread.IsBackground属性的理解

    关于Thread.IsBackground属性的理解C#中,Thread类有一个IsBackground的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程。个人感觉这样的解释等于没有解释..Net中的线程,可以分为后台线程和前台线程。后台线程与前台线程并没有本质的区别,它们之间唯一的区别就是:后台线程不会防止应用程序的进程被终止掉。呵呵,这句话读出来好像并不那么好懂.其实,说白了就是当前台线程都结束了的时候,…

    2022年10月16日
  • pycharm如何创建py文件_pycharm输入不了

    pycharm如何创建py文件_pycharm输入不了PyCharm是一款很好用的编写Python工程的IDE,用PyCharm创建一个Python文件或者向工程添加一个.py文件时,为了更好的使所编写的代码在各操作环境更好的运行,我们往往需要在.py文件中添加头文件标注相关信息。例如:打开PyCharm程序,根据菜单栏中按照如下进入设置:File->settings->Editor->FileandCodeTem…

发表回复

您的电子邮箱地址不会被公开。

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