QLineEdit是一个单行文本编辑器,允许用户输入和编辑单行纯文本。自带一些编辑例如撤销、重做、剪切、粘贴等功能。
QLineEdit继承自QWidget类,具备父类各种API。
下表列出了 QLineEdit 类对象经常调用的一些属性以及它们各自的含义:
属 性 | 含 义 |
---|---|
text | 保存输入框中的文本。 该属性的值可以通过 text() 方法获取,也可以通过 setText(const QString &) 方法修改。 |
maxLength | 设置输入框中最多可以放置的文本长度。当文本长度超出最大限度后,超出部分将被丢弃。 默认情况下,maxLength 的值为 32767。该属性的值可以通过 maxLength() 函数获得,也可以通过 setMaxLength(int) 方法修改。 |
placeholderText | 设置提示信息,例如当用户未选中输入框时,输入框中显示“请输入…”,而用户选中输入框时,“请输入…” 随之消失。 该属性的值可以通过 placeholderText() 方法获取,也可以通过 setPlaceholderText(const QString &) 方法修改。 |
clearButtonEnabled | 当输入框中有文本时,输入框的右侧可以显示一个“一键清除”按钮。该属性的默认值为 false,即输入框中不会自动显示清除按钮。 该属性的值可以通过 isClearButtonEnabled() 方法获取,也可以通过 setClearButtonEnabled(bool enable) 方法修改。 |
echoMode | 设定输入框中文本的显示样式,该属性的可选值有以下几个: QLineEdit::Normal:正常显示所输入的字符,此为默认选项。 QLineEdit::NoEcho:不显示任何输入的字符,常用于密码类型的输入,且长度保密 QLineEdit::Password:显示与平台相关的密码掩饰字符,而不是实际输入的字符。当用户重新点击输入框时,可以紧接着之前的文本继续输入。 QLineEdit::PasswordEchoOnEdit:编辑时正常显示输入的字符,编辑完成后改为用密码掩饰字符显示。当用户重新点击输入框时,不能紧接着之前的文本继续输入。 该属性的是可以通过 echoMode() 方法获取,也可以通过 setEchoMode(EchoMode) 方法修改。 |
frame | 控制输入框的边框。默认情况下,输入框是带有边框的。 该属性的值可以通过 hasFrame() 方法获取,也可以通过 setFrame(bool) 方法修改。 |
除了上表提到的获取和修改属性值的方法外,QLineEdit 类还提供了一些功能实用的方法,例如:
成员方法 | 功 能 |
---|---|
move(int x, int y) | 指定输入框位于父窗口中的位置。 |
setValidator(const QValidator *v) | 限制输入框中的文本内容,比如输入框只包含整数。 |
setReadOnly(bool) | 设置输入框是否进入只读状态。在只读状态下,用户仍可以采用粘贴、拖拽的方式向输入框中放置文本,但无法进行编辑。 |
setAlignent(Qt::Alignment flag) | 设置输入框中输入文本的位置。 |
QLineEdit单行输入框的信号和槽
QLineEdit 类提供了几个信号函数,分别对应用户的几种输入状态。
信号函数 | 功 能 |
---|---|
textEdited(const QString &text) | 当用户编辑输入框中的文本时,此信号就会触发,text 参数即为用户新编辑的文本。 注意,当程序中试图通过 setText() 方法修改输入框中的文本时,不会触发此信号函数。 |
textChanged(const QString &text) | 只要输入框中的文本内容发生变化,就会触发此信息。 |
returnPressed() | 用户按下回车键时,会触发此信号。 |
editingFinished() | 用户按下回车键,或者鼠标点击输入框外的其它位置时,会触发此信号。 |
QLineEdit 类常用的槽函数有以下几个:
槽函数 | 功 能 |
---|---|
clear() | 清空文本框中的内容。 |
setText(const QString &) | 重新指定文本框中的内容。 |
1.创建控件,设置、获取文本
每个单行输入框都是 QLineEdit 类的一个实例对象,QLineEdit 类提供有两个构造函数,分别是:
QLineEdit(QWidget *parent = Q_NULLPTR) QLineEdit(const QString
&contents, QWidget *parent = Q_NULLPTR)
contents 参数用于指定输入框中的文本内容;parent 参数用于指定新建输入框控件的父窗口,新建输入框将会内嵌到父窗口上,作为父窗口的一个子控件。当然,我们也可以不指定父窗口,那么新建的输入框就会作为独立的窗口。
在 QLineEdit 输入框中,用户可以直接输入一行文本,也可以粘贴一行文本,还可以修改输入框内的文本。某些实际场景中,QLineEdit 输入框还可以对用户输入的内容加以限定,比如:
- 限定文本的长度,例如用户最多可以输入 20 个字符;
- 输入文本的格式,例如用户输入出生日期时,必须按照“yy-mm-dd”的格式输入;
- 输入的文本内容,例如当前输入框仅允许用户输入数字,或者只允许用户输入英文字符。
这个很简单,没啥说的
m_lineedit1 = new QLineEdit("账号",this); //创建控件
m_lineedit1->setGeometry(200,200,200,20); //设置控件大小和位置
m_lineedit1->insert(":cgl"); //插入字符
QString str = m_lineedit1->displayText();
qDebug()<<"输入框1内容"<<str; //获取用户能看到的字符串
str = m_lineedit1->text();
qDebug()<<"输入框1内容"<<str; //获取真是的文本字符
注意的是最后两个,如果控件是密码输入框的时候,输入的字符用户看的是*或者黑点。那用最后一个获取的字符就是你看到的字符。而用le.text()获得的就是真是的文本。
2.输出模式
文本框的文本输出模式按下面的枚举值看有这四种
m_lineedit1->setEchoMode(QLineEdit::PasswordEchoOnEdit);
m_lineedit1->echoMode(); //获取输出模式(int)
// 输出模式枚举值
// QLineEdit::Normal 正常显示,返回值0
// QLineEdit.NoEcho 不显示,返回值1
// QLineEdit.Password 密文显示,返回值2
// QLineEdit.PasswordEchoOnEdit 编辑时正常显示,失去焦点后变密文
3.占位提示符
有些时候在打开一个界面时对话框是有提示文本的,当输入内容后文本消失被输入的值替代,这就是占位提示符的作用
m_lineedit1->setPlaceholderText("请输入账号..."); //设置占位文本
m_lineedit2->setPlaceholderText("请输入密码..."); //设置占位文本
m_lineedit1->placeholderText(); //获取占位文本
平时不显示,有字符时会出现一个‘叉叉
单机叉叉后清除所有文本。就是清空按钮的作用
m_lineedit1->setClearButtonEnabled(true); //设置清空按钮开启
m_lineedit1->isClearButtonEnabled(); //获取是否开启清空按钮
可以设定文本框的限制长度,当输入的文本超过设定值时是无法再输入的。
m_lineedit1->setMaxLength(10); //长度限制设定
m_lineedit1->maxLength(); //获取长度限定值
6.只读模式
可以将文本框设置为只读模式,设置后文本无法更改
m_lineedit1->setReadOnly(true);
m_lineedit1->isReadOnly();
源码:
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
QLineEdit *m_lineedit1;
QLineEdit *m_lineedit2;
void text_set_get_test();
void lineedit_mode();
void set_tipinfo();
void clear_lineedit();
void setmaxLength();
void set_onlyread_mode();
};
#endif // MAINWINDOW_H
mainwindow.c
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include
#include
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->resize(800,600);
m_lineedit1 = new QLineEdit(this); //创建控件
m_lineedit1->setGeometry(200,200,200,20); //设置控件大小和位置
m_lineedit2= new QLineEdit(this); //创建控件
m_lineedit2->setGeometry(200,300,200,20); //设置控件大小和位置
text_set_get_test();
lineedit_mode();
set_tipinfo();
clear_lineedit();
setmaxLength();
set_onlyread_mode();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::text_set_get_test()
{
QString str = m_lineedit1->displayText();
qDebug()<<"输入框1内容"<<str; //获取用户能看到的字符串
str = m_lineedit1->text();
qDebug()<<"输入框1内容"<<str; //获取真是的文本字符
// m_lineedit1->insert(":cgl"); //插入字符
}
void MainWindow::lineedit_mode()
{
m_lineedit1->setEchoMode(QLineEdit::Normal);
m_lineedit1->echoMode(); //获取输出模式(int)
// 输出模式枚举值
// QLineEdit::Normal 正常显示,返回值0
// QLineEdit.NoEcho 不显示,返回值1
// QLineEdit.Password 密文显示,返回值2
// QLineEdit.PasswordEchoOnEdit 编辑时正常显示,失去焦点后变密文
}
void MainWindow::set_tipinfo()
{
m_lineedit1->setPlaceholderText("请输入账号..."); //设置占位文本
m_lineedit2->setPlaceholderText("请输入密码..."); //设置占位文本
m_lineedit1->placeholderText(); //获取占位文本
}
void MainWindow::clear_lineedit()
{
m_lineedit1->setClearButtonEnabled(true); //设置清空按钮开启
m_lineedit1->isClearButtonEnabled(); //获取是否开启清空按钮
}
//void MainWindow::auto_addinfo()
//{
// QStringList list = ['aaron','back','click','disc']; //自动补全的数据列表
// completer = QCompleter(list,le) #commpeter的生命周期归属于le的存在
// QLineEdit.setCompleter(completer)
// print(le.completer())
//}
void MainWindow::setmaxLength(){
m_lineedit1->setMaxLength(10); //长度限制设定
m_lineedit1->maxLength(); //获取长度限定值
}
void MainWindow::set_onlyread_mode()
{
m_lineedit1->setReadOnly(true);
m_lineedit1->isReadOnly();
}