KLineEdit Class

An enhanced QLineEdit widget for inputting text. More...

Header: #include <KLineEdit>
CMake: find_package(KF6 REQUIRED COMPONENTS Completion)
target_link_libraries(mytarget PRIVATE KF6::Completion)
Inherits: QLineEdit and KCompletionBase

Properties

Public Functions

KLineEdit(QWidget *parent = nullptr)
KLineEdit(const QString &string, QWidget *parent = nullptr)
(since 4.1) QSize clearButtonUsedSize() const
virtual KCompletionBox *completionBox(bool create = true)
(since 4.2.1) void doCompletion(const QString &text)
bool isSqueezedTextEnabled() const
QString originalText() const
void setCompletionBox(KCompletionBox *box)
void setCompletionModeDisabled(KCompletion::CompletionMode mode, bool disable = true)
void setSqueezedTextEnabled(bool enable)
void setTrapReturnKey(bool trap)
void setUrl(const QUrl &url)
void setUrlDropsEnabled(bool enable)
bool trapReturnKey() const
bool urlDropsEnabled() const
(since 4.2.2) QString userText() const

Public Slots

void rotateText(KCompletionBase::KeyBindingType type)
virtual void setCompletedItems(const QStringList &items, bool autoSuggest = true) override
virtual void setReadOnly(bool)
void setSqueezedText(const QString &text)

Signals

void aboutToShowContextMenu(QMenu *contextMenu)
void clearButtonClicked()
void completion(const QString &)
void completionBoxActivated(const QString &)
void completionModeChanged(KCompletion::CompletionMode)
(since 5.81) void returnKeyPressed(const QString &text)
void substringCompletion(const QString &)
void textRotation(KCompletionBase::KeyBindingType)

Protected Functions

bool autoSuggest() const
virtual void setCompletedText(const QString &, bool)
void setUserSelection(bool userSelection)

Protected Slots

virtual void makeCompletion(const QString &)
void userCancelled(const QString &cancelText)

Detailed Description

This widget inherits from QLineEdit and implements the following additional functionalities:

  • a completion object that provides both automatic and manual text completion as well as multiple match iteration features
  • configurable key-bindings to activate these features
  • a popup-menu item that can be used to allow the user to set text completion modes on the fly based on their preference

To support these features KLineEdit also emits a few more additional signals:

  • completion(const QString &): this signal can be connected to a slot that will assist the user in filling out the remaining text
  • textRotation(KeyBindingType): this signal is intended to be used to iterate through the list of all possible matches whenever there is more than one match for the entered text
  • returnKeyPressed(const QString &): this signal provides the current text in the widget as its argument whenever appropriate (this is in addition to the QLineEdit::returnPressed() signal which KLineEdit inherits from QLineEdit).

This widget by default creates a completion object when you invoke the completionObject(bool) member function for the first time or use setCompletionObject(KCompletion *, bool) to assign your own completion object. Additionally, to make this widget more functional, KLineEdit will by default handle the text rotation and completion events internally when a completion object is created through either one of the methods mentioned above. If you do not need this functionality, simply use KCompletionBase::setHandleSignals(bool) or set the boolean parameter in the above functions to false.

The default key-bindings for completion and rotation is determined from the global settings in KStandardShortcut. These values, however, can be overridden locally by invoking KCompletionBase::setKeyBinding(). The values can easily be reverted back to the default setting, by simply calling useGlobalSettings(). An alternate method would be to default individual key-bindings by using setKeyBinding() with the default second argument.

If EchoMode for this widget is set to something other than QLineEdit::Normal, the completion mode will always be defaulted to CompletionNone. This is done purposefully to guard against protected entries, such as passwords, being cached in KCompletion's list. Hence, if the EchoMode is not QLineEdit::Normal, the completion mode is automatically disabled.

A read-only KLineEdit will have the same background color as a disabled KLineEdit, but its foreground color will be the one used for the read-write mode. This differs from QLineEdit's implementation and is done to give visual distinction between the three different modes: disabled, read-only, and read-write.

To enable the basic completion feature:

KLineEdit *edit = new KLineEdit(this);
KCompletion *comp = edit->completionObject();
// Connect to the Return pressed signal - optional
connect(edit, &KLineEdit::returnKeyPressed, comp, [this](const QString &text) { addItem(text); });

To use a customized completion object or your own completion object:

KLineEdit *edit = new KLineEdit(this);
KUrlCompletion *comp = new KUrlCompletion();
edit->setCompletionObject(comp);
// Connect to the return pressed signal - optional
connect(edit, &KLineEdit::returnKeyPressed, comp, [this](const QString &text) { addItem(text); });

Note if you specify your own completion object you have to either delete it when you don't need it anymore, or you can tell KLineEdit to delete it for you:

edit->setAutoDeleteCompletionObject(true);

Miscellaneous function calls:

// Tell the widget to not handle completion and iteration automatically
edit->setHandleSignals(false);

// Set your own key-bindings for a text completion mode
edit->setKeyBinding(KCompletionBase::TextCompletion, Qt::End);

// Hide the context (popup) menu
edit->setContextMenuPolicy(Qt::NoContextMenu);

// Default the key-bindings back to the default system settings
edit->useGlobalKeyBindings();

TODO qdoc

[Missing image html]

Property Documentation

squeezedTextEnabled : bool

Access functions:

bool isSqueezedTextEnabled() const
void setSqueezedTextEnabled(bool enable)

trapEnterKeyEvent : bool

Access functions:

bool trapReturnKey() const
void setTrapReturnKey(bool trap)

Member Function Documentation

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

Constructs a line edit parent The parent widget of the line edit.

[explicit] KLineEdit::KLineEdit(const QString &string, QWidget *parent = nullptr)

Constructs a KLineEdit object with a default text, a parent, and a name.

string Text to be shown in the edit widget. parent The parent widget of the line edit.

[signal] void KLineEdit::aboutToShowContextMenu(QMenu *contextMenu)

Emitted before the context menu is displayed.

The signal allows you to add your own entries into the the context menu that is created on demand.

Note: Do not store the pointer to the QMenu provided through since it is created and deleted on demand.

contextMenu the context menu about to be displayed

[protected] bool KLineEdit::autoSuggest() const

Whether in current state text should be auto-suggested

[signal] void KLineEdit::clearButtonClicked()

Emitted when the user clicked on the clear button

[since 4.1] QSize KLineEdit::clearButtonUsedSize() const

Returns the size used by the clear button

This function was introduced in 4.1.

[signal] void KLineEdit::completion(const QString &)

Emitted when the completion key is pressed.

Please note that this signal is not emitted if the completion mode is set to CompletionNone or EchoMode is normal.

[virtual] KCompletionBox *KLineEdit::completionBox(bool create = true)

This method will create a completion-box if none is there, yet.

create Set this to false if you don't want the box to be created i.e. to test if it is available.

Returns the completion-box, that is used in completion mode CompletionPopup.

See also setCompletionBox().

[signal] void KLineEdit::completionBoxActivated(const QString &)

Emitted whenever the completion box is activated.

[signal] void KLineEdit::completionModeChanged(KCompletion::CompletionMode)

Emitted when the user changed the completion mode by using the popupmenu.

[since 4.2.1] void KLineEdit::doCompletion(const QString &text)

Do completion now. This is called automatically when typing a key for instance. Emits completion() and/or calls makeCompletion(), depending on emitSignals and handleSignals.

This function was introduced in 4.2.1.

bool KLineEdit::isSqueezedTextEnabled() const

Returns true if text squeezing is enabled.

This is only valid when the widget is in read-only mode.

Note: Getter function for property squeezedTextEnabled.

[virtual protected slot] void KLineEdit::makeCompletion(const QString &)

Completes the remaining text with a matching one from a given list.

QString KLineEdit::originalText() const

Returns the original text if text squeezing is enabled. If the widget is not in "read-only" mode, this function returns the same thing as QLineEdit::text().

See also QLineEdit.

[signal, since 5.81] void KLineEdit::returnKeyPressed(const QString &text)

Emitted when the user presses the Return or Enter key.

The argument is the current text. Note that this signal is not emitted if the widget's EchoMode is set to QLineEdit::EchoMode.

This function was introduced in 5.81.

[slot] void KLineEdit::rotateText(KCompletionBase::KeyBindingType type)

Iterates through all possible matches of the completed text or the history list.

This function simply iterates over all possible matches in case multiple matches are found as a result of a text completion request. It will have no effect if only a single match is found.

type The key-binding invoked.

[override virtual slot] void KLineEdit::setCompletedItems(const QStringList &items, bool autoSuggest = true)

Reimplements: KCompletionBase::setCompletedItems(const QStringList &items, bool autoSuggest).

Same as the above function except it allows you to temporarily turn off text completion in CompletionPopupAuto mode.

items list of completion matches to be shown in the completion box.

autoSuggest true if you want automatic text completion (suggestion) enabled.

[virtual protected] void KLineEdit::setCompletedText(const QString &, bool)

This function simply sets the lineedit text and highlights the text appropriately if the boolean value is set to true.

void KLineEdit::setCompletionBox(KCompletionBox *box)

Set the completion-box to be used in completion mode CompletionPopup. This will do nothing if a completion-box already exists.

box The KCompletionBox to set

See also completionBox().

void KLineEdit::setCompletionModeDisabled(KCompletion::CompletionMode mode, bool disable = true)

Disables completion modes by making them non-checkable.

The context menu allows to change the completion mode. This method allows to disable some modes.

[virtual slot] void KLineEdit::setReadOnly(bool)

Sets the lineedit to read-only. Similar to QLineEdit::setReadOnly but also takes care of the background color, and the clear button.

[slot] void KLineEdit::setSqueezedText(const QString &text)

Squeezes text into the line edit.

This can only be used with read-only line-edits.

void KLineEdit::setSqueezedTextEnabled(bool enable)

Enable text squeezing whenever the supplied text is too long. Only works for "read-only" mode.

Note that once text squeezing is enabled, QLineEdit::text() and QLineEdit::displayText() return the squeezed text. If you want the original text, use originalText.

Note: Setter function for property squeezedTextEnabled.

See also isSqueezedTextEnabled() and QLineEdit.

void KLineEdit::setTrapReturnKey(bool trap)

By default, KLineEdit recognizes Key_Return and Key_Enter and emits the returnPressed() signals, but it also lets the event pass, for example causing a dialog's default-button to be called.

Call this method with trap = true to make KLineEdit stop these events. The signals will still be emitted of course.

Note: Setter function for property trapEnterKeyEvent.

See also trapReturnKey().

void KLineEdit::setUrl(const QUrl &url)

Sets url into the lineedit. It uses QUrl::toDisplayString() so that the url is properly decoded for displaying.

void KLineEdit::setUrlDropsEnabled(bool enable)

Enables/Disables handling of URL drops. If enabled and the user drops an URL, the decoded URL will be inserted. Otherwise the default behavior of QLineEdit is used, which inserts the encoded URL. Call setUrlDropsEnabled(false) if you need dropEvent to be called in a KLineEdit subclass.

enable If true, insert decoded URLs

See also urlDropsEnabled().

[protected] void KLineEdit::setUserSelection(bool userSelection)

Sets the widget in userSelection mode or in automatic completion selection mode. This changes the colors of selections.

[signal] void KLineEdit::substringCompletion(const QString &)

Emitted when the shortcut for substring completion is pressed.

[signal] void KLineEdit::textRotation(KCompletionBase::KeyBindingType)

Emitted when the text rotation key-bindings are pressed.

The argument indicates which key-binding was pressed. In KLineEdit's case this can be either one of two values: PrevCompletionMatch or NextCompletionMatch. See KCompletionBase::setKeyBinding for details.

Note that this signal is not emitted if the completion mode is set to CompletionNone or echoMode() is not normal.

bool KLineEdit::trapReturnKey() const

Returns true if keyevents of Key_Return or Key_Enter will be stopped or if they will be propagated.

Note: Getter function for property trapEnterKeyEvent.

See also setTrapReturnKey().

bool KLineEdit::urlDropsEnabled() const

Returns true when decoded URL drops are enabled

See also setUrlDropsEnabled().

[protected slot] void KLineEdit::userCancelled(const QString &cancelText)

Resets the current displayed text. Call this function to revert a text completion if the user cancels the request. Mostly applies to popup completions.

[since 4.2.2] QString KLineEdit::userText() const

Returns the text as given by the user (i.e. not autocompleted) if the widget has autocompletion disabled, this function returns the same as QLineEdit::text().

This function was introduced in 4.2.2.