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
- squeezedTextEnabled : bool
- trapEnterKeyEvent : bool
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.