一、前言
QLineEdit类继承于QWidget,是Qt设计用来输入或者显示一行文本的编辑框部件。
QLineEdit行编辑框,允许用户输入和编辑单行纯文本,并可以使用快捷编辑功能,包括复制、粘贴、剪切和拖放。是项目开发中最常用的输入控件。
行文本编辑器,顾名思义可以编辑文本,使用setDragEnabled()启动拖放功能,直接从外部或者其他部件把文本拖进来,经典用法在我们写烧录软件的时候,把烧录文件直接从桌面拖进来,
二、属性和方法
1、text
该属性代表当前标签文本内容。
QString text() const
void setText(const QString &)
2、maxLength
该属性编辑器文本的最大允许长度。最大值为32767,如果文本太长,它将在限制处被截断。
int maxLength() const
void setMaxLength(int)
3、alignment
该属性代表文本水平和垂直方向对齐方式,同一时间可以同时指定两个方向的对齐方式。默认的对齐方式为水平靠左、垂直居中。
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::EchoMode 描述 Normal 正常显示输入的字符(默认值) NoEcho 不显示任何东西,适用于连密码长度都要保密的密码。 Password 显示平台相关的密码掩码字符,而不是实际输入的字符。 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、redoAvailable
该属性表示是否可重做,当用户对行编辑中的文本执行了一个或多个撤销(CTRL+Z)操作后,值变化为true,当全部重做(CTRL+Y)之后,值变化为false。
bool isRedoAvailable() const //是否可重做
14、undoAvailable
该属性表示是否可撤销,一旦用户在行编辑中修改了文本,值变化为true,全部撤销之后,值会变成false。
bool isUndoAvailable() const //是否可撤销
15、cursorMoveStyle
该属性表示保存此行编辑中光标的移动样式。
Qt::CursorMoveStyle cursorMoveStyle() const //获取当前的移动样式
void setCursorMoveStyle(Qt::CursorMoveStyle style) //设置当前的移动样式
- Qt::LogicalMoveStyle:在从左到右的文本块内,按左箭头键时减少光标位置,按右箭头键时增加光标位置。如果文本块是从右到左的,则应用相反的行为。
- Qt::VisualMoveStyle:按下左箭头键将始终使光标向左移动,无论文本的书写方向如何。 按右箭头键将始终使光标向右移动。
16、acceptableInput
该属性表示输入是否满足inputMask和验证器。默认情况下,此属性为true。
bool hasAcceptableInput() const
17、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; //#牌照号码
18、公共函数
1)hasSelectedTex
返回是否有选定部分或全部文本。
bool hasSelectedText() const
2)selectedText
获取选定部分的文本。
QString selectedText() const
3)validator
获取编辑器设置的掩码规则。
const QValidator *validator() const
4)setValidator
设置掩码规则,使用QDoubleValidator, QIntValidator, QRegExpValidator和QRegularExpressionValidator这些继承于QValidator的类进行封装,是QLineEdit设置掩码的一种方式。
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]
5)Completer
返回自动补全器规则。
QCompleter *completer() const
6)setCompleter
设置自动补全器,通常与QValidator或QLineEdit::inputMask一起使用。
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);
19、公共槽函数
void clear() //清除文本
void copy() const //复制
void cut() //剪切
void paste() //粘贴
void redo() //重制
void selectAll() //选择全部文本
void undo() //撤销
20、信号
1)cursorPositionChanged
光标移动时触发此信号,oldPos表示前一个位置,newPos表示新位置。
void cursorPositionChanged(int oldPos, int newPos)
2)editingFinished
当按下回车键或行编辑失去焦点时,触发此信号。
void editingFinished()
3)inputRejected
当用户按下一个不被认为是可接受输入的键时,就会发出这个信号,比如你设置为只能输入数字,而当用户输入一个字母的时候就会触发此信号。
void inputRejected()
4)returnPressed
按下回车键时触发此信号。
5)selectionChanged
文本选择发生变化时触发此信号。
6)textChanged
文本发生变化时触发此信号。
void textChanged(const QString &text)
7)textEdited
文本发生编辑的时候触发此信号。
void textEdited(const QString &text)