2.8.1 QLineEdit
2.8.1.1 属性
QLineEdit是行文本编辑框。我们直接来看它的属性。
就其中几个比较重要的属性做一下介绍
1 alignment:设置输入文字的方向
水平方向
- Qt::AlignLeft 文字左对齐,从左往右输入。
- Qt::AlignRight 文字右对齐,从右往左输入。
- Qt::AlignHCenter 文字水平居中
- Qt::AlignJustify 等同于Qt::AlignLeft
垂直方向
- Qt::AlignTop 文字上对齐
- Qt::AlignBottom 文字下对齐
- Qt::AlignVCenter 文字垂直居中
Qt::AlignBaseline 以基准线对齐。下面是一张维基百科的基准线图
2 clearButtonEnabled:清空按钮是否可见
如果设置为true,会在行编辑器右侧多出一个清空按钮,点击该按钮,内容会被清空。
3 echoMode:输入模式。
- QLineEdit::Normal:按照输入的字符,显示字符。
- QLineEdit::NoEcho:不显示输入字符,这种模式适合于密码和密码长度都保密的情况。
- QLineEdit::Password:使用平台相关的掩码来代替输入字符显示。
- QLineEdit::PasswordEchoOnEdit:编辑时显示字符,结束编辑则显示掩码。
4 displayText:显示文字。区别与text。
- 如果echoMode设置为Normal,则返回原文本;
- 如果EchoMode设置为Password或PasswordEchoOnEdit,它将返回一个与平台相关的密码掩码字符,比如“* * * * * *”;
- 如果EchoMode设置为NoEcho,则返回空字符串。
5 inputMask 掩码
用于设置有效输入。比如,LineEdit只允许输入数字或字母等。下图是每个掩码的意义:
是必须表示——是:该位置必须要填写;否:该位置可以用空格代替。
还可以调用setValidator()设置验证器。
6 placeholderText:占位字符串。
当编辑框为空时,会有一个灰色的字符串用来提示用户需要输入的内容。
7 readOnly:只读。
只能用来显示,不能修改。
8 selectedText:被选中的字符串。
2.8.1.2 接口
1.setValidator() 设置验证器,类似于inputMask。
- QIntValidator 只接受整数,并且可以设置整数范围
- QDoubleValidator 接受双精度浮点数,并且可设置范围。
- QRegExpValidator 接受符合正则表达式规则的字符。
2 setCompleter()。
这个函数比较重要,通过此函数可以使编辑器拥有提示或记忆功能。具体用法我会在下边的示例中给出。
2.8.2 示例
新建Gui项目InputWidget,类名为InputWidget,继承自QWidget。
ui界面,拖入一个QTabWidget,标签改为QLineEidt
inputwidget.h
#ifndef INPUTWIDGET_H
#define INPUTWIDGET_H
#include
namespace Ui {
class InputWidget;
}
class InputWidget : public QWidget
{
Q_OBJECT
public:
explicit InputWidget(QWidget *parent = 0);
~InputWidget();
private slots:
void on_checkBox_clearBtn_toggled(bool checked);
void on_checkBox_readOnly_toggled(bool checked);
void on_combo_inputH_currentIndexChanged(int index);
void on_combo_inputV_currentIndexChanged(int index);
void on_combo_echoMode_currentIndexChanged(int index);
void on_combo_validator_currentIndexChanged(int index);
void on_lineEdit_inputMask_textChanged(const QString &arg1);
private:
void initLineEditTab();
private:
Ui::InputWidget *ui;
};
#endif // INPUTWIDGET_H
inputwidget.cpp
#include "inputwidget.h"
#include "ui_inputwidget.h"
InputWidget::InputWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::InputWidget)
{
ui->setupUi(this);
/*QLineEdit*/
initLineEditTab();
}
InputWidget::~InputWidget()
{
delete ui;
}
void InputWidget::on_checkBox_clearBtn_toggled(bool checked)
{
ui->lineEdit->setClearButtonEnabled(checked);
}
void InputWidget::on_checkBox_readOnly_toggled(bool checked)
{
ui->lineEdit->setReadOnly(checked);
}
void InputWidget::on_combo_inputH_currentIndexChanged(int index)
{
ui->lineEdit->setAlignment((Qt::Alignment) (Qt::AlignLeft<lineEdit->setAlignment((Qt::Alignment) (Qt::AlignTop<lineEdit->setEchoMode((QLineEdit::EchoMode)index);
}
void InputWidget::on_combo_validator_currentIndexChanged(int index)
{
//删除当前验证器
ui->lineEdit->setValidator(0);
if (index == 1)
{
//整数验证器,0-80
QIntValidator* validator = new QIntValidator(20, 80);
ui->lineEdit->setValidator(validator);
}
else if (index == 2)
{
//双精度验证器,0.-1000.
QDoubleValidator* validator = new QDoubleValidator();
validator->setBottom(0.);
validator->setTop(100.);
ui->lineEdit->setValidator(validator);
}
else if (index == 3)
{
//匹配0-99的整数
QRegExpValidator* validator = new QRegExpValidator(QRegExp("^\\d\\d?$"));
ui->lineEdit->setValidator(validator);
}
}
void InputWidget::on_lineEdit_inputMask_textChanged(const QString &arg1)
{
ui->lineEdit->setInputMask(arg1);
}
void InputWidget::initLineEditTab()
{
//输入方向-水平
QStringList textList;
textList << "AlignLeft" <<"AlignRight" << "AlignHCenter" << "AlignJustify";
ui->combo_inputH->addItems(textList);
//输入方向-垂直
textList.clear();
textList << "AlignTop" <<"AlignBottom" << "AlignVCenter" << "AlignBaseline";
ui->combo_inputV->addItems(textList);
//输入模式
textList.clear();
textList << "Normal" <<"NoEcho" << "Password" << "PasswordEchoOnEdit";
ui->combo_echoMode->addItems(textList);
//验证器
textList.clear();
textList << "无验证器" << "Int" <<"Double" << "Reqexp";
ui->combo_validator->addItems(textList);
}
可以在设置掩码中输入"000.000.000.000",看看会有什么效果。
更多分享请关注微信公众号:跟小豆君学Qt
知乎:小豆君的干货铺