QLineEdit Class

QLineEdit widget 是一个单行文本编辑器。更多

头文件: #include <QLineEdit>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承: QWidget

公共类型

enum ActionPosition { LeadingPosition, TrailingPosition }
enum EchoMode { Normal, NoEcho, Password, PasswordEchoOnEdit }

属性

公共函数

QLineEdit(QWidget *parent = nullptr)
QLineEdit(const QString &contents, QWidget *parent = nullptr)
virtual ~QLineEdit()
void addAction(QAction *action, QLineEdit::ActionPosition position)
QAction *addAction(const QIcon &icon, QLineEdit::ActionPosition position)
Qt::Alignment alignment() const
void backspace()
QCompleter *completer() const
QMenu *createStandardContextMenu()
void cursorBackward(bool mark, int steps = 1)
void cursorForward(bool mark, int steps = 1)
Qt::CursorMoveStyle cursorMoveStyle() const
int cursorPosition() const
int cursorPositionAt(const QPoint &pos)
void cursorWordBackward(bool mark)
void cursorWordForward(bool mark)
void del()
void deselect()
QString displayText() const
bool dragEnabled() const
QLineEdit::EchoMode echoMode() const
void end(bool mark)
bool hasAcceptableInput() const
bool hasFrame() const
bool hasSelectedText() const
void home(bool mark)
QString inputMask() const
void insert(const QString &newText)
bool isClearButtonEnabled() const
bool isModified() const
bool isReadOnly() const
bool isRedoAvailable() const
bool isUndoAvailable() const
int maxLength() const
QString placeholderText() const
QString selectedText() const
int selectionEnd() const
int selectionLength() const
int selectionStart() const
void setAlignment(Qt::Alignment flag)
void setClearButtonEnabled(bool enable)
void setCompleter(QCompleter *c)
void setCursorMoveStyle(Qt::CursorMoveStyle style)
void setCursorPosition(int)
void setDragEnabled(bool b)
void setEchoMode(QLineEdit::EchoMode)
void setFrame(bool)
void setInputMask(const QString &inputMask)
void setMaxLength(int)
void setModified(bool)
void setPlaceholderText(const QString &)
void setReadOnly(bool)
void setSelection(int start, int length)
void setTextMargins(const QMargins &margins)
void setTextMargins(int left, int top, int right, int bottom)
void setValidator(const QValidator *v)
QString text() const
QMargins textMargins() const
const QValidator *validator() const

重新实现的公共函数

virtual bool event(QEvent *e) override
virtual QVariant inputMethodQuery(Qt::InputMethodQuery property) const override
virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override
virtual void timerEvent(QTimerEvent *e) override

公共插槽

void clear()
void copy() const
void cut()
void paste()
void redo()
void selectAll()
void setText(const QString &)
void undo()

信号

void cursorPositionChanged(int oldPos, int newPos)
void editingFinished()
void inputRejected()
void returnPressed()
void selectionChanged()
void textChanged(const QString &text)
void textEdited(const QString &text)

受保护函数

QRect cursorRect() const
virtual void initStyleOption(QStyleOptionFrame *option) const

重新实现的受保护函数

virtual void changeEvent(QEvent *ev) override
virtual void contextMenuEvent(QContextMenuEvent *event) override
virtual void dragEnterEvent(QDragEnterEvent *e) override
virtual void dragLeaveEvent(QDragLeaveEvent *e) override
virtual void dragMoveEvent(QDragMoveEvent *e) override
virtual void dropEvent(QDropEvent *e) override
virtual void focusInEvent(QFocusEvent *e) override
virtual void focusOutEvent(QFocusEvent *e) override
virtual void inputMethodEvent(QInputMethodEvent *e) override
virtual void keyPressEvent(QKeyEvent *event) override
virtual void keyReleaseEvent(QKeyEvent *e) override
virtual void mouseDoubleClickEvent(QMouseEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *) override

详细说明

行编辑器允许用户输入和编辑一行纯文本,并提供有用的编辑功能,包括撤销和重做、剪切和粘贴以及拖放。

通过更改行编辑器的echoMode() ,还可将其用作密码等输入内容的只写字段。

QTextEdit 是一个相关的类,可以进行多行、富文本编辑。

限制文本

使用maxLength 可以定义文本的最大允许长度。您可以使用inputMasksetValidator() 进一步限制文本内容。

编辑文本

您可以使用setText() 或insert() 更改文本。使用text() 获取文本,使用displayText() 获取显示的文本(可能不同,请参阅EchoMode )。可以使用setSelection() 或selectAll() 选择文本,也可以cut() 、copy() 和paste() 选择文本。要对齐文本,请使用setAlignment() 。

当文本发生变化时,会发出textChanged() 信号。如果文本以调用setText() 以外的其他方式发生变化,则会发出textEdited() 信号。移动光标时,会发出cursorPositionChanged() 信号。选择 Return 或 Enter 键时,会发出returnPressed() 信号。

当文本编辑结束时,无论是行编辑失去焦点还是选择了 Return/Enter 键,都会发出editingFinished() 信号。

如果行编辑焦点丢失时没有任何文本更改,则不会发出editingFinished() 信号。

如果在行编辑器上设置了验证器,则只有当验证器返回QValidator::Acceptable 时,才会发出returnPressed()/editingFinished() 信号。

有关 QLineEdit 的多种使用方式的更多信息,请参阅行编辑示例,该示例还提供了一些行编辑示例,展示了各种属性和验证器对用户提供的输入和输出的影响。

设置框架

默认情况下,QLineEdits 具有平台样式指南中指定的框架。您可以通过调用setFrame(false) 关闭框架。

默认按键绑定

下表描述了默认按键绑定。

注: 行编辑还提供了一个上下文菜单(通常通过右键单击调用),可显示下面列出的一些编辑选项。

按键操作
左箭头将光标向左移动一个字符。
Shift+ 左箭头向左移动并选择一个字符。
右箭头将光标向右移动一个字符。
Shift+ 右箭头向右移动并选择一个字符。
首页将光标移至行首。
结束将光标移至行尾。
退格删除光标左侧的字符。
Ctrl+Backspace删除光标左侧的单词。
删除删除光标右侧的字符。
Ctrl+Delete删除光标右侧的单词。
Ctrl+A全选。
Ctrl+C将选中的文本复制到剪贴板。
Ctrl+Insert将选中的文本复制到剪贴板。
Ctrl+K删除至行尾。
Ctrl+V将剪贴板中的文本粘贴到编辑行中。
Shift+ 插入将剪贴板文本粘贴到行编辑中。
Ctrl+X删除选中的文本并将其复制到剪贴板。
Shift+ 删除删除选中的文本并将其复制到剪贴板。
Ctrl+Z撤销上次操作。
Ctrl+Y重做上次撤销的操作。

任何其他代表有效字符的按键都会导致将该字符插入行编辑中。

另请参阅 QTextEdit,QLabel,QComboBox行编辑示例

成员类型文档

enum QLineEdit::ActionPosition

该枚举类型描述了行编辑器应如何显示要添加的操作部件。

常数说明
QLineEdit::LeadingPosition0当使用布局方向Qt::LeftToRight 时,部件显示在文本的左边;当使用布局方向Qt::RightToLeft 时,部件显示在文本的右边。
QLineEdit::TrailingPosition1使用Qt::LeftToRightQt::RightToLeft 时,小工具分别显示在文本的右侧或左侧。

另请参阅 addAction(),removeAction() 和QWidget::layoutDirection

enum QLineEdit::EchoMode

该枚举类型描述了行编辑器应如何显示其内容。

常数说明
QLineEdit::Normal0在输入字符时显示。这是默认值。
QLineEdit::NoEcho1不显示任何内容。对于连密码长度都要保密的密码来说,这可能比较合适。
QLineEdit::Password2显示与平台相关的密码掩码字符,而不是实际输入的字符。
QLineEdit::PasswordEchoOnEdit3只在输入时显示字符。否则,显示与Password 相同的字符。

另请参阅 setEchoMode() 和echoMode()。

属性文档

[read-only] acceptableInput : const bool

该属性表示输入是否满足inputMask 和验证器的要求。

默认情况下,该属性为true

访问函数:

bool hasAcceptableInput() const

另请参阅 setInputMask() 和setValidator()。

alignment : Qt::Alignment

该属性表示行编辑的对齐方式。

此处允许水平和垂直对齐,Qt::AlignJustify 将映射到Qt::AlignLeft

默认情况下,该属性包含Qt::AlignLeftQt::AlignVCenter 的组合。

访问功能:

Qt::Alignment alignment() const
void setAlignment(Qt::Alignment flag)

另请参见 Qt::Alignment

clearButtonEnabled : bool

该属性用于确定行编辑器在不为空时是否显示清除按钮。

如果启用,行编辑器在包含某些文本时会显示一个尾部clear 按钮。否则,行编辑器不显示clear 按钮(默认)。

访问功能:

bool isClearButtonEnabled() const
void setClearButtonEnabled(bool enable)

另请参阅 addAction() 和removeAction()。

cursorMoveStyle : Qt::CursorMoveStyle

该属性用于保存该行编辑中光标的移动方式。

当该属性设置为Qt::VisualMoveStyle 时,行编辑将使用视觉移动样式。无论文本的书写方向如何,使用左箭头键都会使光标向左移动。同样的行为也适用于右箭头键。

当属性设置为Qt::LogicalMoveStyle (默认值)时,在从左到右 (LTR) 文本块中,使用左箭头键将增加光标位置,而使用右箭头键将减少光标位置。如果文本块是从右到左 (RTL),则行为相反。

访问功能:

Qt::CursorMoveStyle cursorMoveStyle() const
void setCursorMoveStyle(Qt::CursorMoveStyle style)

cursorPosition : int

此属性保存此行编辑的当前光标位置。

设置光标位置会在适当的时候重新绘制。

默认情况下,此属性的值为 0。

访问功能:

int cursorPosition() const
void setCursorPosition(int)

[read-only] displayText : const QString

此属性包含显示的文本。

如果echoModeNormal ,则返回与text() 相同的内容。如果EchoModePasswordPasswordEchoOnEdit ,则返回与平台相关的密码掩码字符串(如 "******")。如果EchoModeNoEcho ,则返回空字符串。

默认情况下,该属性包含空字符串。

访问功能:

QString displayText() const

另请参阅 setEchoMode(),text() 和EchoMode

dragEnabled : bool

如果用户在选定的文本上按下并移动鼠标,该属性会显示行编辑器是否开始拖动。

拖动默认为禁用。

访问功能:

bool dragEnabled() const
void setDragEnabled(bool b)

echoMode : EchoMode

该属性用于保存行编辑器的回声模式。

回声模式决定了在行编辑器中输入的文本如何显示(或回声)给用户。

最常见的设置是Normal ,在这种模式下,用户输入的文本将逐字显示。QLineEdit 也支持抑制或遮盖输入文本的模式:包括NoEchoPasswordPasswordEchoOnEdit

widget 的显示以及复制或拖动文本的功能都会受到此设置的影响。

默认情况下,此属性设置为Normal

访问功能:

QLineEdit::EchoMode echoMode() const
void setEchoMode(QLineEdit::EchoMode)

另请参阅 EchoModedisplayText()。

frame : bool

该属性用于确定线条编辑器是否在框架内绘制。

如果启用(默认值),线条编辑器将在框架内绘制。否则,线条编辑器在绘制时不带任何框架。

访问功能:

bool hasFrame() const
void setFrame(bool)

[read-only] hasSelectedText : const bool

该属性显示是否有文本被选中。

如果部分或全部文本已被用户选中,则 hasSelectedText() 返回true 。否则,返回false

默认情况下,此属性为false

访问函数:

bool hasSelectedText() const

另请参阅 selectedText()。

inputMask : QString

该属性包含验证输入掩码。

设置QLineEdit 的验证掩码。验证器可以代替掩码使用,也可以与掩码结合使用;请参阅setValidator() 。默认值为空字符串,表示不使用输入掩码。

要取消设置掩码并返回正常的QLineEdit 操作,请输入空字符串。

输入掩码是一个输入模板字符串。它可以包含以下元素:

屏蔽字符定义在此位置有效的Category 输入字符。
元字符各种特殊含义(详见下文)。
分隔符所有其他字符都被视为不可更改的分隔符。

下表列出了可用于输入掩码的掩码字符和元字符。

掩码字符含义
A必须使用的字母类字符,如 A-Z、a-z。
a允许使用但不要求使用的字母类字符。
N字母或数字类别中的必填字符,如 A-Z、a-z、0-9。
n允许使用但不要求使用字母或数字类字符。
X任何非空白字符均为必填字符。
x允许使用但不要求使用任何非空白字符。
9需要输入数字类字符,如 0-9。
0允许使用但不要求使用 "数字 "类字符。
D需要数字类别中大于 0 的字符,如 1-9。
d允许使用但不要求使用 "数字 "类别中大于 0 的字符,如 1-9。
#允许使用但不要求使用 "数字 "类字符或正负号。
H需要十六进制字符。A-F、a-f、0-9。
h允许使用但不要求使用十六进制字符。
B需要二进制字符。0-1.
b允许使用二进制字符,但不是必填字符。
元字符含义
>以下所有字母字符均为大写。
<以下所有字母字符均为小写。
!关闭大小写转换。
;c终止输入掩码并将空白字符设置为c
[ ] { }保留。
\使用\ 转义上述特殊字符,将其用作分隔符。

创建或清除输入掩码时,行编辑器将填入输入掩码字符串的副本,其中元字符已被删除,掩码字符已被空白字符(默认为space )替换。

设置输入掩码后,text() 方法会返回行编辑内容的修改副本,其中所有空白字符都已删除。未修改的内容可使用displayText() 读取。

如果行编辑器的当前内容不符合输入掩码的要求,hasAcceptableInput() 方法将返回 false。

示例

屏蔽注释
000.000.000.000;_IP 地址;空格为_
HH:HH:HH:HH:HH:HH;_MAC 地址
0000-00-00ISO 日期;空格为space
>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#许可证号;空格为# ,所有(字母)字符均转换为大写。

要获得范围控制(如 IP 地址),请将掩码与validators 一起使用。

访问功能:

QString inputMask() const
void setInputMask(const QString &inputMask)

另请参阅 maxLength,QChar::isLetter(),QChar::isNumber() 和QChar::digitValue().

maxLength : int

该属性用于保存文本的最大允许长度。

如果文本过长,就会在限制长度处截断。

如果发生截断,任何选中的文本都将取消选中,光标位置设置为 0,并显示字符串的第一部分。

如果行编辑器有输入掩码,则掩码定义了字符串的最大长度。

默认情况下,该属性的值为 32767。

访问功能:

int maxLength() const
void setMaxLength(int)

另请参见 inputMask

modified : bool

该属性表示用户是否修改了行编辑器的内容。

QLineEdit 不会读取已修改标记;它的默认值为 false,每当用户修改行编辑器的内容时,该标记就会变为 true。

这对于需要提供默认值,但一开始并不知道默认值是多少(例如,默认值取决于表单中的其他字段)的情况非常有用。在没有最佳默认值的情况下开始行编辑,当默认值已知时,如果 modified() 返回false (用户没有输入任何文本),则插入默认值。

调用setText() 会将已修改标记重置为 false。

访问函数:

bool isModified() const
void setModified(bool)

placeholderText : QString

该属性用于保存行编辑器的占位符文本。

只要行编辑器为空,设置该属性就会使行编辑器显示灰色的占位符文本。

通常情况下,空行编辑器即使有焦点,也会显示占位符文本。但是,如果内容水平居中,则当行编辑器有焦点时,占位符文本不会显示在光标下。

默认情况下,该属性包含一个空字符串。

访问函数:

QString placeholderText() const
void setPlaceholderText(const QString &)

另请参阅 text()。

readOnly : bool

该属性表示行编辑是否为只读。

在只读模式下,用户仍可将文本复制到剪贴板,或拖放文本(如果echoMode() 是Normal ),但不能编辑文本。

QLineEdit 在只读模式下不显示光标。

默认情况下,该属性为false

访问功能:

bool isReadOnly() const
void setReadOnly(bool)

另请参阅 setEnabled( )。

[read-only] redoAvailable : const bool

此属性表示重做是否可用。

一旦用户对行编辑器中的文本执行了一次或多次撤销操作,重做就变得可用。

默认情况下,此属性为false

访问功能:

bool isRedoAvailable() const

[read-only] selectedText : const QString

该属性用于保存选中的文本。

如果没有选定文本,该属性的值就是空字符串。

默认情况下,此属性包含空字符串。

访问函数:

QString selectedText() const

另请参阅 hasSelectedText()。

text : QString

该属性用于保存行编辑文本。

设置该属性会清除选择、清除撤销/重做历史、将光标移至行尾,并将modified 属性重置为 false。使用 setText() 插入文本时,文本不会被验证。

文本将被截断为maxLength() 长度。

默认情况下,该属性包含空字符串。

访问功能:

QString text() const
void setText(const QString &)

Notifier 信号:

void textChanged(const QString &text)

另请参阅 insert() 和clear()。

[read-only] undoAvailable : const bool

该属性表示是否可以撤销。

一旦用户修改了行编辑器中的文本,撤销操作就会生效。

默认情况下,该属性为false

访问函数:

bool isUndoAvailable() const

成员函数文档

[explicit] QLineEdit::QLineEdit(QWidget *parent = nullptr)

创建一个无文本的行编辑器。

最大文本长度设置为 32767 个字符。

parent 参数将被发送到QWidget 构造函数。

另请参阅 setText() 和setMaxLength()。

[explicit] QLineEdit::QLineEdit(const QString &contents, QWidget *parent = nullptr)

构造包含文本contents 的行编辑,作为parent 的子行。

光标位置设置为行尾,最大文本长度为 32767 个字符。

另请参阅 text() 和setMaxLength()。

[virtual noexcept] QLineEdit::~QLineEdit()

销毁行编辑。

void QLineEdit::addAction(QAction *action, QLineEdit::ActionPosition position)

action 添加到position 的操作列表中。

QAction *QLineEdit::addAction(const QIcon &icon, QLineEdit::ActionPosition position)

这是一个重载函数。

使用给定的iconposition 创建一个新动作。

void QLineEdit::backspace()

如果未选择任何文本,则删除文本光标左侧的字符,并将光标向左移动一个位置。如果选择了任何文本,则光标会移动到所选文本的开头,并删除所选文本。

另请参阅 del()。

[override virtual protected] void QLineEdit::changeEvent(QEvent *ev)

重实现:QWidget::changeEvent(QEvent *event).

[slot] void QLineEdit::clear()

清除行编辑内容。

另请参阅 setText() 和insert()。

QCompleter *QLineEdit::completer() const

返回当前提供补全的QCompleter

另请参阅 setCompleter()。

[override virtual protected] void QLineEdit::contextMenuEvent(QContextMenuEvent *event)

重实现:QWidget::contextMenuEvent(QContextMenuEvent *event)。

显示用createStandardContextMenu() 创建的标准上下文菜单。

如果不希望行编辑器有上下文菜单,可以将其contextMenuPolicy 设置为Qt::NoContextMenu 。要自定义上下文菜单,请重新实现此函数。要扩展标准上下文菜单,请重新实现此函数,调用createStandardContextMenu() 并扩展返回的菜单。

void LineEdit::contextMenuEvent(QContextMenuEvent *event)
{
    QMenu *menu = createStandardContextMenu();
    menu->addAction(tr("My Menu Item"));
    //...
    menu->exec(event->globalPos());
    delete menu;
}

event 参数用于获取事件发生时鼠标光标所在的位置。

另请参阅 setContextMenuPolicy()。

[slot] void QLineEdit::copy() const

将所选文本复制到剪贴板(如果有的话),如果echoMode() 是Normal

另请参阅 cut() 和paste()。

QMenu *QLineEdit::createStandardContextMenu()

创建标准上下文菜单,当用户用鼠标右键单击行编辑时显示该菜单。它由默认的contextMenuEvent() 处理程序调用。弹出菜单的所有权将转移给调用者。

void QLineEdit::cursorBackward(bool mark, int steps = 1)

将光标向后移动steps 个字符。如果mark 为真,则移过的每个字符都会添加到选区中。如果mark 为假,则清除选区。

另请参阅 cursorForward()。

void QLineEdit::cursorForward(bool mark, int steps = 1)

将光标向前移动steps 字符。如果mark 为真,则移过的每个字符都会添加到选区中。如果mark 为假,则清除选区。

另请参阅 cursorBackward() 。

int QLineEdit::cursorPositionAt(const QPoint &pos)

返回点pos 下方的光标位置。

[signal] void QLineEdit::cursorPositionChanged(int oldPos, int newPos)

只要光标移动,就会发出该信号。前一个位置由oldPos 给出,新位置由newPos 给出。

另请参见 setCursorPosition() 和cursorPosition()。

[protected] QRect QLineEdit::cursorRect() const

返回包含行编辑光标的矩形。

void QLineEdit::cursorWordBackward(bool mark)

将光标向后移动一个单词。如果mark 为 true,则也会选中该字。

另请参阅 cursorWordForward() 。

void QLineEdit::cursorWordForward(bool mark)

将光标向前移动一个单词。如果mark 为 true,则也会选中该字。

另请参阅 cursorWordBackward() 。

[slot] void QLineEdit::cut()

将选中的文本复制到剪贴板并删除(如果有的话),如果echoMode() 是Normal

如果当前验证器不允许删除所选文本,cut() 将复制而不删除。

另请参阅 copy()、paste() 和setValidator()。

void QLineEdit::del()

如果未选择任何文本,则删除文本光标右侧的字符。如果选择了任何文本,则光标会移动到所选文本的开头,并删除所选文本。

另请参阅 backspace()。

void QLineEdit::deselect()

取消选择任何选定文本。

另请参阅 setSelection() 和selectAll()。

[override virtual protected] void QLineEdit::dragEnterEvent(QDragEnterEvent *e)

重实现:QWidget::dragEnterEvent(QDragEnterEvent *event).

[override virtual protected] void QLineEdit::dragLeaveEvent(QDragLeaveEvent *e)

重实现:QWidget::dragLeaveEvent(QDragLeaveEvent *event).

[override virtual protected] void QLineEdit::dragMoveEvent(QDragMoveEvent *e)

重实现:QWidget::dragMoveEvent(QDragMoveEvent *event).

[override virtual protected] void QLineEdit::dropEvent(QDropEvent *e)

重实现:QWidget::dropEvent(QDropEvent *event).

[signal] void QLineEdit::editingFinished()

使用回车或回车键时,或行编辑器失去焦点且其内容自上次发出该信号后发生变化时,都会发出该信号。

注意: 如果在行编辑器上设置了validator() 或inputMask() 且使用了回车/回车键,则只有在输入跟随inputMask() 且validator() 返回QValidator::Acceptable 时,才会发出 editingFinished() 信号。

void QLineEdit::end(bool mark)

将文本光标移到行尾,除非光标已经在行尾。如果mark 为 true,则会选择最后一个位置的文本。否则,如果光标被移动,任何选中的文本都将取消选中。

另请参阅 home().

[override virtual] bool QLineEdit::event(QEvent *e)

重实现:QWidget::event(QEvent *event).

[override virtual protected] void QLineEdit::focusInEvent(QFocusEvent *e)

重实现:QWidget::focusInEvent(QFocusEvent *event).

[override virtual protected] void QLineEdit::focusOutEvent(QFocusEvent *e)

重实现:QWidget::focusOutEvent(QFocusEvent *event).

void QLineEdit::home(bool mark)

将文本光标移至行首,除非光标已在行首。如果mark 为 true,则文本会被选中到第一个位置。否则,如果光标移动,任何选中的文本都将取消选中。

另请参阅 end().

[virtual protected] void QLineEdit::initStyleOption(QStyleOptionFrame *option) const

使用此QLineEdit 中的值初始化option 。当子类需要QStyleOptionFrame ,但又不想自己填写所有信息时,该方法非常有用。

另请参阅 QStyleOption::initFrom()。

[override virtual protected] void QLineEdit::inputMethodEvent(QInputMethodEvent *e)

重实现:QWidget::inputMethodEvent(QInputMethodEvent *event).

[override virtual] QVariant QLineEdit::inputMethodQuery(Qt::InputMethodQuery property) const

重实现:QWidget::inputMethodQuery(Qt::InputMethodQuery query) const.

[signal] void QLineEdit::inputRejected()

当用户使用的按键不被视为有效输入时,就会发出该信号。例如,如果使用一个键导致验证器的validate() 调用返回Invalid 。另一种情况是尝试输入超过行编辑最大长度的字符。

注意: 当只接受部分文本时,仍会发出该信号。例如,如果设置了最大长度,而粘贴剪贴板文本时长度超过了最大长度。

void QLineEdit::insert(const QString &newText)

删除任何选定文本,插入newText ,并验证结果。如果结果有效,则将新文本设置为行编辑的新内容。

另请参阅 setText() 和clear()。

[override virtual protected] void QLineEdit::keyPressEvent(QKeyEvent *event)

重实现:QWidget::keyPressEvent(QKeyEvent *event).

将给定的按键event 转换为行编辑操作。

如果使用了 Return 或 Enter 键,且当前文本有效(或可通过验证器made valid ),则会发出returnPressed() 信号。

另请参见 Default Key Bindings

[override virtual protected] void QLineEdit::keyReleaseEvent(QKeyEvent *e)

重实现:QWidget::keyReleaseEvent(QKeyEvent *event).

[override virtual] QSize QLineEdit::minimumSizeHint() const

重新实现属性:QWidget::minimumSizeHint 的访问函数。

返回行编辑的最小尺寸。

返回的宽度通常至少能容纳一个字符。

[override virtual protected] void QLineEdit::mouseDoubleClickEvent(QMouseEvent *e)

重实现:QWidget::mouseDoubleClickEvent(QMouseEvent *event).

[override virtual protected] void QLineEdit::mouseMoveEvent(QMouseEvent *e)

重实现:QWidget::mouseMoveEvent(QMouseEvent *event).

[override virtual protected] void QLineEdit::mousePressEvent(QMouseEvent *e)

重实现:QWidget::mousePressEvent(QMouseEvent *event).

[override virtual protected] void QLineEdit::mouseReleaseEvent(QMouseEvent *e)

重实现:QWidget::mouseReleaseEvent(QMouseEvent *event).

[override virtual protected] void QLineEdit::paintEvent(QPaintEvent *)

重实现:QWidget::paintEvent(QPaintEvent *event).

[slot] void QLineEdit::paste()

在光标位置插入剪贴板中的文本,删除任何选中的文本,前提是行编辑不是read-only

如果最终结果对当前validator 无效,则不会发生任何操作。

另请参阅 copy() 和cut()。

[slot] void QLineEdit::redo()

如果重做是available ,则重做最后一次操作。

[signal] void QLineEdit::returnPressed()

使用回车键或回车键时会发出该信号。

注意: 如果在行编辑中设置了validator() 或inputMask(),则只有在inputMask() 之后输入且validator() 返回QValidator::Acceptable 时,才会发出 returnPressed() 信号。

[slot] void QLineEdit::selectAll()

选择所有文本(高亮显示)并将光标移至末尾。

注意: 这在插入默认值时非常有用,因为如果用户在点击 widget 之前键入,所选文本将被删除。

另请参阅 setSelection() 和deselect()。

[signal] void QLineEdit::selectionChanged()

每当选择发生变化时,就会发出该信号。

另请参阅 hasSelectedText() 和selectedText()。

int QLineEdit::selectionEnd() const

返回在行编辑中直接选中后的字符的索引(如果未选中文本,则返回-1)。

另请参阅 selectedText()、selectionStart() 和selectionLength()。

int QLineEdit::selectionLength() const

返回选区的长度。

另请参阅 selectedText()、selectionStart() 和selectionEnd()。

int QLineEdit::selectionStart() const

返回行编辑中第一个选定字符的索引(如果未选定文本,则返回-1)。

另请参阅 selectedText()、selectionEnd() 和selectionLength()。

void QLineEdit::setCompleter(QCompleter *c)

将该行编辑设置为提供自动补全功能,即c 。完成模式通过QCompleter::setCompletionMode() 设置。

要将QCompleterQValidatorQLineEdit::inputMask 配合使用,需要确保提供给QCompleter 的模型包含有效条目。您可以使用QSortFilterProxyModel 来确保QCompleter 的模型只包含有效条目。

要移除补全器并禁用自动补全功能,请通过nullptr

另请参阅 completer() 和QCompleter

void QLineEdit::setSelection(int start, int length)

从位置startlength 字符中选择文本。允许负长度。

另请参阅 deselect()、selectAll() 和selectedText()。

void QLineEdit::setTextMargins(const QMargins &margins)

设置边框内文本周围的margins

另请参阅 textMargins().

void QLineEdit::setTextMargins(int left, int top, int right, int bottom)

设置框架内文本的边距大小为left,top,right, 和bottom

另请参阅 textMargins() 。

void QLineEdit::setValidator(const QValidator *v)

将行编辑值的验证器设置为v

行编辑的returnPressed() 和editingFinished() 信号只有在v 将行编辑的内容验证为Acceptable 时才会发出。在编辑过程中,用户可以将内容更改为任何Intermediate 值,但不能将文本编辑为v 验证为Invalid 的值。

这样既可以限制编辑完成后存储的文本,又可以让用户有足够的自由将文本从一种有效状态编辑到另一种有效状态。

要移除当前的输入验证器,请通过nullptr 。初始设置为无输入验证器(可接受任何输入,直至maxLength()).

另请参阅 validator(),hasAcceptableInput(),QIntValidator,QDoubleValidator, 和QRegularExpressionValidator

[override virtual] QSize QLineEdit::sizeHint() const

重新实现属性QWidget::sizeHint 的访问函数。

返回 widget 的推荐尺寸。

返回的宽度(以像素为单位)通常足以容纳 15 到 20 个字符。

[signal] void QLineEdit::textChanged(const QString &text)

每当文本发生变化时,就会发出该信号。text 参数是新文本。

textEdited() 不同的是,当文本以编程方式(例如调用setText() )更改时,也会发出该信号。

注: 属性text 的通知信号。

[signal] void QLineEdit::textEdited(const QString &text)

每当编辑文本时,都会发出该信号。text 参数是新文本。

textChanged() 不同的是,当文本以编程方式更改(例如调用setText() )时,不会发出该信号。

QMargins QLineEdit::textMargins() const

返回 widget 的文本边距。

另请参阅 setTextMargins()。

[override virtual] void QLineEdit::timerEvent(QTimerEvent *e)

重实现:QObject::timerEvent(QTimerEvent *event).

[slot] void QLineEdit::undo()

如果撤消是available ,则撤消上次操作。取消选择任何当前选区,并将选区起始位置更新为当前光标位置。

const QValidator *QLineEdit::validator() const

返回指向当前输入验证器的指针,如果未设置验证器,则返回nullptr

另请参阅 setValidator().

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.