http://www.cnblogs.com/hellovenus/p/5183593.html

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

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

echoLineEdit->setPlaceholderText(“电影、影人、影院、电视剧”);
2.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);
}
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()对输入进行限制
这种方式的实质是通过正则表达式限制输入的内容。

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

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助手。

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

一些测试代码供参考——

头文件:

#ifndef WINDOW_H
#define WINDOW_H

#include

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

#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);
}
}
//! [1

Qt——QLineEdit使用总结相关推荐

  1. Qt QLineEdit 信号函数总结

    Qt QLineEdit 信号函数总结 QLineEdit一共有6个信号函数,并不多,很好理解. void cursorPositionChanged( intold, intnew ) 当鼠标移动时 ...

  2. Qt QLineEdit单行输入框用法详解

    Qt QLineEdit单行输入框用法详解 QLineEdit 是 Qt 提供的一个控件类,它直接继承自 QWdiget 类,专门用来创建单行输入框,如下图所示: 图 1 单行文本输入框 实际开发中, ...

  3. Qt QLineEdit中屏蔽粘贴功能

    Qt QLineEdit中屏蔽粘贴功能 http://blog.sina.com.cn/s/blog_8d8425f3010108d6.html 在Qt4中实现屏蔽粘贴功能有好几种方法,其中最简单的一 ...

  4. QT QLineEdit焦点和键盘问题

    QLineEdit焦点和键盘问题 今天主要讨论如何使输入框失去焦点后键盘自动退出. window 平板开发发现一个问题,当界面有输入框时,系统键盘弹出和隐藏不正确. 正常情况,进入界面输入框处于焦点状 ...

  5. Qt——QLineEdit

    QLineEdit是一个单行文本编辑控件. 使用者可以通过很多函数,输入和编辑单行文本,比如撤销.恢复.剪切.粘贴以及拖放等. 通过改变QLineEdit的 echoMode() ,可以设置其属性,比 ...

  6. QT QLineEdit使用详解

    本文详细的介绍了QLineEdit控件的各种操作,例如:编辑框的状态.边框.密码框.限制输入类型.对齐方式.验证器的使用.样式表的应用等操作. QLineEdit允许用户输入和编辑单行纯文本,提供了很 ...

  7. Qt QLineEdit详解

    1.概述 QLineEdit 行编辑框允许用户使用一组有用的编辑功能输入和编辑一行纯文本,包括撤消和重做.剪切和粘贴以及拖放. 2.常用数据接口 2.1设置/获取 显示数据 void setText( ...

  8. Qt QLineEdit

    前言 QLineEdit单行文本编辑器,一般当输入控件使用,总结一下. 设置输入提示 void setPlaceholderText(const QString &); 设置最大长度 void ...

  9. Qt QLineEdit 输入框

    QLineEdit是一个单行文本编辑控件. 使用者可以通过很多函数,输入和编辑单行文本,比如撤销.恢复.剪切.粘贴以及拖放等. 通过改变QLineEdit的 echoMode() ,可以设置其属性,比 ...

最新文章

  1. 深入浅出在NIO技术中,如何理解直接缓冲区要比非直接缓冲区效率高?
  2. 优化案例(part3)--Aberrance suppresse dspatio-temporal correlation filters for visual object tracking
  3. Flask学习 一 基本结构
  4. Android 向右滑返回,退出当前activity
  5. [perl]perl界大牛唐凤传说
  6. 16 WM配置-策略-激活存储类型搜索(Storage Type Search)
  7. 2021.08.23学习内容Pytorch与Torch的关系以及Torchvision作用
  8. 数据结构之栈与递归的应用(八皇后递归解法)
  9. od 调试java_OD调试初步概念——修改窗口标题
  10. B2B网关支付方案介绍
  11. 【Matplotlib设置】Python绘图全局字体改为 Times New Roman
  12. 用java制作扑克牌_java实现简易扑克牌游戏
  13. 标准单元库的corner简述
  14. 希尔伯特:无穷小是理想元素
  15. cdr宏教程_coreldraw
  16. 打印机服务器端口无显示器,什么是打印机端口?无法找到打印机端口是怎么回事?...
  17. 2021年浙江省跨境电商行业发展概况及发展趋势分析[图]
  18. 网页基础知识思维导图
  19. 智能运维监控管理平台技术方案
  20. 如何用建好的stm32模板来创建Free-Rtos系统

热门文章

  1. Idea设置JDK版本(在jdk版本超过java8时,使用Hutool工具包获取系统信息报错)
  2. 孝敬自己的父母,孝敬对方的父母
  3. 【批量地点检索-高德百度地图地理编码对比】
  4. 微信小程序组件调用和传值
  5. cesium实现包裹式单体化数据处理流程
  6. apidoc的安装与使用步骤
  7. 2021年茶艺师(高级)考试资料及茶艺师(高级)考试试卷
  8. 捷通华声与海信共同打造优质手写手机
  9. 谢谢 能把它的播放地址给我吗 c.k有一首叫《只想唱歌给你听》知道不
  10. python入门教程之五元组