目录
一、概述
二、属性和方法
三、信号
QLineEdit允许用户输入和编辑单行纯文本,并可以使用快捷编辑功能,包括复制、粘贴、剪切和拖放。是项目开发中最常用的输入控件。
默认键绑定描述如下。
- Left Arrow //将光标向左移动一个字符。
- Shift+Left Arrow //将文本向左移动并选择一个字符。
- Right Arrow //将光标向右移动一个字符。
- Shift+Right Arrow //向右移动并选择文本一个字符。
- Home //将光标移动到行首。
- End //将光标移动到行尾。
- Backspace //删除光标左侧的字符。
- Ctrl+Backspace //删除光标左侧的单词。
- Delete //删除光标右侧的字符。
- Ctrl+Delete //删除光标右侧的单词。
- Ctrl+A //全选
- Ctrl+C //将选定的文本复制到剪贴板。
- Ctrl+V //将剪贴板文本粘贴到行编辑中。
- Ctrl+Insert //将选定的文本复制到剪贴板。
- Ctrl+K //删除到行尾。
- Shift+Insert //将剪贴板文本粘贴到行编辑中。
- Ctrl+X //删除所选文本并将其复制到剪贴板。
- Shift+Delete //删除所选文本并将其复制到剪贴板。
- Ctrl+Z //撤消最后一个操作。
- Ctrl+Y //重做上次未完成的操作。
1、text 属性代表当前标签内容
QString text() const //当前内容
void setText(const QString &) //设置内容
2、maxLength 属性保存文本的最大允许长度。最大值为32767,如果文本太长,它将在限制处被截断。
int maxLength() const //获取最大长度
void setMaxLength(int) //设置最大长度
3、alignment 属性代表文本水平和垂直方向对齐,同一时间可以同时指定两个方向的对齐方式。默认的对齐方式为水平靠左、垂直居中。Qt::Alignment定义参考QLabel,不多描述。
Qt::Alignment alignment() const //获取水平参数
void setAlignment(Qt::Alignment flag) //设置水平参数
Qt::AlignLeft: //水平靠左。
Qt::AlignRight: //水平靠右。
Qt::AlignHCenter: //水平居中。
Qt::AlignJustify: //水平调整间距两端对齐。
垂直标志
Qt::AlignTop: //垂直靠上。
Qt::AlignBottom: //垂直靠下。
Qt::AlignVCenter: //垂直居中。
Qt::AlignBaseline: //垂直与基线对齐。
组合标志
Qt::AlignCenter: 两个维度的中心,等价于 Qt::AlignHCenter | Qt::AlignVCenter。
4、 EchoMode 属性代表回显模式,回显模式决定如何显示QLineEdit中输入的文本。
QLineEdit::EchoMode echoMode() const //获取回显模式
void setEchoMode(QLineEdit::EchoMode) //设置回显模式
- QLineEdit::Normal 正常显示输入的字符(默认值)
- QLineEdit::NoEcho 不显示任何东西,适用于连密码长度都要保密的密码。
- QLineEdit::Password 显示平台相关的密码掩码字符,而不是实际输入的字符。
- QLineEdit::PasswordEchoOnEdit 编辑时显示输入的字符,否则显示密码掩码字符
5、readOnly 属性保留行编辑是否为只读。在只读模式下,不显示游标,可以将文本复制到剪贴板,或者拖放文本(当echoMode为QLineEdit::Normal),但不能编辑它。
bool isReadOnly() const //获取是否只读
void setReadOnly(bool) //设置是否只读
6、clearButtonEnabled 属性用于确定行编辑器在不为空时是否显示清除按钮。启用时,当QLineEdit包含一些文本时,将显示一个后面的清除按钮,否则不显示。
bool isClearButtonEnabled() const //获取是否显示清除按钮使能
void setClearButtonEnabled(bool enable) //设置是否显示清除按钮使能
7、placeholderText属性保存行编辑的占位符文本。
QString placeholderText() const //获取占位符
void setPlaceholderText(const QString &) //设置占位符
8、modified 属性保存行编辑器的内容是否已被用户修改。
bool isModified() const //获取是否被修改
void setModified(bool) //设置是否被修改
9、cursorPosition 属性保存此行编辑的当前光标位置
int cursorPosition() const //获取当前光标位置
void setCursorPosition(int) //设置当前光标
10、displayText 属性保存显示的文本。返回值由echoMode的值决定。
如果echoMode为Normal,则返回与text()相同的结果。
如果echoMode是Password或PasswordEchoOnEdit,它返回一个大小取决于平台的密码掩码字符长度的字符串。
如果echoMode是NoEcho,则返回一个空字符串。
QString displayText() const //获取当前实现的文本
11、dragEnabled 属性保存是否可拖动,如果用户在某些选定文本上按下并移动鼠标,则lineedit是否开始拖动,此属性将保留该属性。
bool dragEnabled() const //获取拖动使能
void setDragEnabled(bool b) //设置拖动使能
PS:实际项目中,经常会出现需要把外部文件直接拉进QLineEdit,然后显示文件路径的情况,这时候就需要用到Drag and Drop机制。
12、frame 属性用于确定线条编辑器是否使用边框。
bool hasFrame() const //获取是否有边框
void setFrame(bool) //设置是否有边框
13、hasSelectedTex与selectedText hasSelectedTex保存是否有选定部分或全部文本,selectedText保存所选的文本,配合使用。
bool hasSelectedText() const //是否有选中的文本
QString selectedText() const //获取选中的文本
14、redoAvailable 是否可重做,当用户对行编辑中的文本执行了一个或多个撤销(CTRL+Z)操作后,值变化为true,当全部重做(CTRL+Y)之后,值变化为false。
bool isRedoAvailable() const //是否可重做
15、undoAvailable 是否可撤销,一旦用户在行编辑中修改了文本,值变化为true,全部撤销之后,值会变成false。
bool isUndoAvailable() const //是否可撤销
16、cursorMoveStyle 属性保存此行编辑中光标的移动样式。
Qt::CursorMoveStyle cursorMoveStyle() const //获取当前的移动样式
void setCursorMoveStyle(Qt::CursorMoveStyle style) //设置当前的移动样式
- Qt::LogicalMoveStyle:在从左到右的文本块内,按左箭头键时减少光标位置,按右箭头键时增加光标位置。如果文本块是从右到左的,则应用相反的行为。
- Qt::VisualMoveStyle:按下左箭头键将始终使光标向左移动,无论文本的书写方向如何。 按右箭头键将始终使光标向右移动。
17、acceptableInput 属性保存输入是否满足inputMask和验证器。默认情况下,此属性为true。
bool hasAcceptableInput() const
18、inputMask 属性保存验证输入掩码
QString inputMask() const //获取当前掩码,如果没有设置则有“”
void setInputMask(const QString &inputMask //设置当前掩码,取消掩码则设置为“”
下表列出了输入掩码的占位符和字面字符,并说明其如何控制数据输入
A
:ASCII字母字符是必须输入的(A-Z,a-z)a
:ASCII字母字符是允许输入的,但不是必须输入的N
:ASCII字母字符是必须输入的(A-Z,a-z,0-9n
:ASCII字母字符是允许输入的,但不是必须输入的X
:任何字符都是必须输入x
:任何字符都是允许输入的,但不是必须输入的9
:ASCII数字字符是必须输入的(0-9)0
:ASCII数字字符是允许输入的,但不是必须输入的D
:ASCII数字字符是必须输入的(1-9)d
:ASCII数字字符是允许输入的,但不是必须的(1-9)#
:ASCII数字字符与加减字符是允许输入的,但不是必须的H
:十六进制格式字符是必须输入的(A-F,a-f,0-9)h
:十六进制格式字符允许输入,但不是必须的B
:二进制格式字符是必须输入的(0,1)b
:二进制格式字符是允许输入的,但不是必须的>
:所有字母字符都大写<
:所有字母字符都小写!
:关闭大小写转换\
:使用‘\’转义上面列出的字符
Examples:
- 000.000.000.000; //IP地址 银行卡余额
- HH:HH:HH:HH:HH:HH; //Mac地址
- 0000-00-00; //时间
- >AAAAA-AAAAA-AAAAA-AAAAA-AAAAA; //#牌照号码
19、validator 设置掩码,使用QDoubleValidator, QIntValidator, QRegExpValidator和QRegularExpressionValidator这些继承于QValidator的类进行封装,然后使用setValidator设置,也是QLineEdit设置掩码的一种方式。
const QValidator *validator() const //获取掩码
void setValidator(const QValidator *v) //设置掩码
Examples:
QValidator *validator = new QIntValidator(100, 999, this);
QLineEdit *edit = new QLineEdit(this);
// 输入框将会接收从100~999的自然数输入
edit->setValidator(validator);
QValidator *validator_double = new QIntValidator(-100, 100, this);
QLineEdit *edit_2 = new QLineEdit(this);
// 输入框将会接收从-100~100的整数输入
edit_2->setValidator(validator_double);
// regexp: optional '-' followed by between 1 and 3 digits
QRegExp rx("-?\\d{1,3}");
QValidator *validator_3 = new QRegExpValidator(rx, this);
QLineEdit *edit_3 = new QLineEdit(this);
edit_3->setValidator(validator_3);
"[a-zA-Z0-9]+$"
//限制只允许出现大小写字母和数字"^-?(180|1?[0-7]?\d(\.\d{1,4})?)$"
//限制浮点数输入范围为[-180,180],小数位后4位"^([1-9]|[1-9]\d|100)$"
//限制整数输入访问[1,100]
正则表达式语法
正则表达式测试
20、Completer 自动补全器,通常与QValidator或QLineEdit::inputMask一起使用。
QCompleter *completer() const //获取自动补全器
void setCompleter(QCompleter *c) //设置自动补全器
QStringList wordList;
wordList << "alpha" << "omega" << "omicron" << "zeta";
QLineEdit *lineEdit = new QLineEdit(this);
QCompleter *completer = new QCompleter(wordList, this);
completer->setCaseSensitivity(Qt::CaseInsensitive);
lineEdit->setCompleter(completer);
void cursorPositionChanged(int oldPos, int newPos) //光标移动时触发此信号,oldPos表示前一个位置,newPos表示新位置
void editingFinished() //当按下回车键或行编辑失去焦点时,触发此信号
void inputRejected() //当用户按下一个不被认为是可接受输入的键时,就会发出这个信号,比如你设置为只能输入数字,而当用户输入一个字母的时候就会触发此信号。
void returnPressed() //按下回车键时触发此信号
void selectionChanged() //选择发生变化时触发此信号
void textChanged(const QString &text) //文本发生变化时触发此信号
void textEdited(const QString &text) //文本发生编辑的时候触发此信号
实际项目开发中最常用的就是textChanged,一般通过此信号检测用户输入,然后改变窗口状态,显示为已编辑。其他信号用的不多,可当作了解。