Как связать qcombobox с qlineedit
In this article we will see how we can set line edit to the combo box, line edit is the widget in pyqt5. A line edit allows the user to enter and edit a single line of plain text with a useful collection of editing functions, including undo and redo, cut and paste, and drag and drop.
In order to add line edit to the combo box we use setLineEdit method, with this we can use line edit widget to enter the item in combo box even if it non editable state.
Как связать qcombobox с qlineedit
In this article we will see how we can set line edit to the combo box, line edit is the widget in pyqt5. A line edit allows the user to enter and edit a single line of plain text with a useful collection of editing functions, including undo and redo, cut and paste, and drag and drop.
In order to add line edit to the combo box we use setLineEdit method, with this we can use line edit widget to enter the item in combo box even if it non editable state.
Syntax : combo_box.setLineEdit(line_edit)
Argument : It takes QLineEdit object as argument
Action performed : This will add line edit to the combo box
QComboBox Class

A QComboBox provides a means of presenting a list of options to the user in a way that takes up the minimum amount of screen space.
A combobox is a selection widget that displays the current item, and can pop up a list of selectable items. A combobox may be editable, allowing the user to modify each item in the list.
Comboboxes can contain pixmaps as well as strings; the insertItem() and setItemText() functions are suitably overloaded. For editable comboboxes, the function clearEditText() is provided, to clear the displayed string without changing the combobox’s contents.
There are three signals emitted if the current item of a combobox changes, currentIndexChanged(), currentTextChanged() and activated(). currentIndexChanged() and currentTextChanged() are always emitted regardless if the change was done programmatically or by user interaction, while activated() is only emitted when the change is caused by user interaction. The highlighted() signal is emitted when the user highlights an item in the combobox popup list. All three signals exist in two versions, one with a QString argument and one with an int argument. If the user selects or highlights a pixmap, only the int signals are emitted. Whenever the text of an editable combobox is changed the editTextChanged() signal is emitted.
When the user enters a new string in an editable combobox, the widget may or may not insert it, and it can insert it in several locations. The default policy is InsertAtBottom but you can change this using setInsertPolicy().
It is possible to constrain the input to an editable combobox using QValidator; see setValidator(). By default, any input is accepted.
A combobox can be populated using the insert functions, insertItem() and insertItems() for example. Items can be changed with setItemText(). An item can be removed with removeItem() and all items can be removed with clear(). The text of the current item is returned by currentText(), and the text of a numbered item is returned with text(). The current item can be set with setCurrentIndex(). The number of items in the combobox is returned by count(); the maximum number of items can be set with setMaxCount(). You can allow editing using setEditable(). For editable comboboxes you can set auto-completion using setCompleter() and whether or not the user can add duplicates is set with setDuplicatesEnabled().
QComboBox uses the model/view framework for its popup list and to store its items. By default a QStandardItemModel stores the items and a QListView subclass displays the popuplist. You can access the model and view directly (with model() and view()), but QComboBox also provides functions to set and get item data (e.g., setItemData() and itemText()). You can also set a new model and view (with setModel() and setView()). For the text and icon in the combobox label, the data in the model that has the Qt::DisplayRole and Qt::DecorationRole is used. Note that you cannot alter the SelectionMode of the view(), e.g., by using setSelectionMode().
Member Type Documentation
enum QComboBox:: InsertPolicy
This enum specifies what the QComboBox should do when a new string is entered by the user.
| Constant | Value | Description |
|---|---|---|
| QComboBox::NoInsert | 0 | The string will not be inserted into the combobox. |
| QComboBox::InsertAtTop | 1 | The string will be inserted as the first item in the combobox. |
| QComboBox::InsertAtCurrent | 2 | The current item will be replaced by the string. |
| QComboBox::InsertAtBottom | 3 | The string will be inserted after the last item in the combobox. |
| QComboBox::InsertAfterCurrent | 4 | The string is inserted after the current item in the combobox. |
| QComboBox::InsertBeforeCurrent | 5 | The string is inserted before the current item in the combobox. |
| QComboBox::InsertAlphabetically | 6 | The string is inserted in the alphabetic order in the combobox. |
enum QComboBox:: SizeAdjustPolicy
This enum specifies how the size hint of the QComboBox should adjust when new content is added or content changes.
| Constant | Value | Description |
|---|---|---|
| QComboBox::AdjustToContents | 0 | The combobox will always adjust to the contents |
| QComboBox::AdjustToContentsOnFirstShow | 1 | The combobox will adjust to its contents the first time it is shown. |
| QComboBox::AdjustToMinimumContentsLengthWithIcon | 2 | The combobox will adjust to minimumContentsLength plus space for an icon. For performance reasons use this policy on large models. |
Property Documentation
[read-only] count : const int
This property holds the number of items in the combobox
By default, for an empty combo box, this property has a value of 0.
Access functions:
| int | count () const |
[read-only, since 5.2] currentData : const QVariant
This property holds the data for the current item
By default, for an empty combo box or a combo box in which no current item is set, this property contains an invalid QVariant.
This property was introduced in Qt 5.2.
Access functions:
| QVariant | currentData (int role = Qt::UserRole) const |
currentIndex : int
This property holds the index of the current item in the combobox.
The current index can change when inserting or removing items.
By default, for an empty combo box or a combo box in which no current item is set, this property has a value of -1.
Access functions:
| int | currentIndex () const |
| void | setCurrentIndex (int index) |
Notifier signal:
| void | currentIndexChanged (int index) |
currentText : QString
This property holds the current text
If the combo box is editable, the current text is the value displayed by the line edit. Otherwise, it is the value of the current item or an empty string if the combo box is empty or no current item is set.
The setter setCurrentText() simply calls setEditText() if the combo box is editable. Otherwise, if there is a matching text in the list, currentIndex is set to the corresponding index.
Access functions:
| QString | currentText () const |
| void | setCurrentText (const QString &text) |
Notifier signal:
| void | currentTextChanged (const QString &text) |
duplicatesEnabled : bool
This property holds whether the user can enter duplicate items into the combobox
Note that it is always possible to programmatically insert duplicate items into the combobox.
By default, this property is false (duplicates are not allowed).
Access functions:
| bool | duplicatesEnabled () const |
| void | setDuplicatesEnabled (bool enable) |
editable : bool
This property holds whether the combo box can be edited by the user
By default, this property is false . The effect of editing depends on the insert policy.
Note: When disabling the editable state, the validator and completer are removed.
Access functions:
| bool | isEditable () const |
| void | setEditable (bool editable) |
frame : bool
This property holds whether the combo box draws itself with a frame
If enabled (the default) the combo box draws itself inside a frame, otherwise the combo box draws itself without any frame.
Access functions:
| bool | hasFrame () const |
| void | setFrame (bool) |
iconSize : QSize
This property holds the size of the icons shown in the combobox.
Unless explicitly set this returns the default value of the current style. This size is the maximum size that icons can have; icons of smaller size are not scaled up.
Access functions:
| QSize | iconSize () const |
| void | setIconSize (const QSize &size) |
insertPolicy : InsertPolicy
This property holds the policy used to determine where user-inserted items should appear in the combobox
The default value is InsertAtBottom, indicating that new items will appear at the bottom of the list of items.
Access functions:
| QComboBox::InsertPolicy | insertPolicy () const |
| void | setInsertPolicy (QComboBox::InsertPolicy policy) |
maxCount : int
This property holds the maximum number of items allowed in the combobox
Note: If you set the maximum number to be less then the current amount of items in the combobox, the extra items will be truncated. This also applies if you have set an external model on the combobox.
By default, this property’s value is derived from the highest signed integer available (typically 2147483647).
Access functions:
| int | maxCount () const |
| void | setMaxCount (int max) |
maxVisibleItems : int
This property holds the maximum allowed size on screen of the combo box, measured in items
By default, this property has a value of 10.
Note: This property is ignored for non-editable comboboxes in styles that returns true for QStyle::SH_ComboBox_Popup such as the Mac style or the Gtk+ Style.
Access functions:
| int | maxVisibleItems () const |
| void | setMaxVisibleItems (int maxItems) |
minimumContentsLength : int
This property holds the minimum number of characters that should fit into the combobox.
The default value is 0.
If this property is set to a positive value, the minimumSizeHint() and sizeHint() take it into account.
Access functions:
| int | minimumContentsLength () const |
| void | setMinimumContentsLength (int characters) |
modelColumn : int
This property holds the column in the model that is visible.
If set prior to populating the combo box, the pop-up view will not be affected and will show the first column (using this property’s default value).
By default, this property has a value of 0.
Note: In an editable combobox, the visible column will also become the completion column.
Access functions:
| int | modelColumn () const |
| void | setModelColumn (int visibleColumn) |
[since 5.15] placeholderText : QString
Sets a placeholderText text shown when no valid index is set
The placeholderText will be shown when an invalid index is set. The text is not accessible in the dropdown list. When this function is called before items are added the placeholder text will be shown, otherwise you have to call setCurrentIndex(-1) programmatically if you want to show the placeholder text. Set an empty placeholder text to reset the setting.
This property was introduced in Qt 5.15.
Access functions:
| QString | placeholderText () const |
| void | setPlaceholderText (const QString &placeholderText) |
sizeAdjustPolicy : SizeAdjustPolicy
This property holds the policy describing how the size of the combobox changes when the content changes
Access functions:
| QComboBox::SizeAdjustPolicy | sizeAdjustPolicy () const |
| void | setSizeAdjustPolicy (QComboBox::SizeAdjustPolicy policy) |
Member Function Documentation
QComboBox:: QComboBox ( QWidget *parent = nullptr)
Constructs a combobox with the given parent, using the default model QStandardItemModel.
[signal] void QComboBox:: activated ( int index)
This signal is sent when the user chooses an item in the combobox. The item’s index is passed. Note that this signal is sent even when the choice is not changed. If you need to know when the choice actually changes, use signal currentIndexChanged() or currentTextChanged().
[slot] void QComboBox:: clear ()
Clears the combobox, removing all items.
Note: If you have set an external model on the combobox this model will still be cleared when calling this function.
[slot] void QComboBox:: clearEditText ()
Clears the contents of the line edit used for editing in the combobox.
[signal] void QComboBox:: currentIndexChanged ( int index)
This signal is sent whenever the currentIndex in the combobox changes either through user interaction or programmatically. The item’s index is passed or -1 if the combobox becomes empty or the currentIndex was reset.
Note: Notifier signal for property currentIndex.
[signal, since 5.0] void QComboBox:: currentTextChanged (const QString &text)
This signal is sent whenever currentText changes. The new value is passed as text.
Note: Notifier signal for property currentText.
This function was introduced in Qt 5.0.
[signal] void QComboBox:: editTextChanged (const QString &text)
This signal is emitted when the text in the combobox’s line edit widget is changed. The new text is specified by text.
[signal] void QComboBox:: highlighted ( int index)
This signal is sent when an item in the combobox popup list is highlighted by the user. The item’s index is passed.
[slot] void QComboBox:: setEditText (const QString &text)
Sets the text in the combobox’s text edit.
[signal, since 5.14] void QComboBox:: textActivated (const QString &text)
This signal is sent when the user chooses an item in the combobox. The item’s text is passed. Note that this signal is sent even when the choice is not changed. If you need to know when the choice actually changes, use signal currentIndexChanged() or currentTextChanged().
This function was introduced in Qt 5.14.
[signal, since 5.14] void QComboBox:: textHighlighted (const QString &text)
This signal is sent when an item in the combobox popup list is highlighted by the user. The item’s text is passed.
This function was introduced in Qt 5.14.
[virtual] QComboBox::
Destroys the combobox.
void QComboBox:: addItem (const QString &text, const QVariant &userData = QVariant())
Adds an item to the combobox with the given text, and containing the specified userData (stored in the Qt::UserRole). The item is appended to the list of existing items.
void QComboBox:: addItem (const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
Adds an item to the combobox with the given icon and text, and containing the specified userData (stored in the Qt::UserRole). The item is appended to the list of existing items.
void QComboBox:: addItems (const QStringList &texts)
Adds each of the strings in the given texts to the combobox. Each item is appended to the list of existing items in turn.
[override virtual protected] void QComboBox:: changeEvent ( QEvent *e)
QCompleter *QComboBox:: completer () const
Returns the completer that is used to auto complete text input for the combobox.
[override virtual protected] void QComboBox:: contextMenuEvent ( QContextMenuEvent *e)
Reimplements: QWidget::contextMenuEvent(QContextMenuEvent *event).
[override virtual] bool QComboBox:: event ( QEvent *event)
Reimplements: QWidget::event(QEvent *event).
int QComboBox:: findData (const QVariant &data, int role = Qt::UserRole, Qt::MatchFlags flags = static_cast<Qt::MatchFlags>(Qt::MatchExactly|Qt::MatchCaseSensitive)) const
Returns the index of the item containing the given data for the given role; otherwise returns -1.
The flags specify how the items in the combobox are searched.
int QComboBox:: findText (const QString &text, Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const
Returns the index of the item containing the given text; otherwise returns -1.
The flags specify how the items in the combobox are searched.
[override virtual protected] void QComboBox:: focusInEvent ( QFocusEvent *e)
[override virtual protected] void QComboBox:: focusOutEvent ( QFocusEvent *e)
[override virtual protected] void QComboBox:: hideEvent ( QHideEvent *e)
Reimplements: QWidget::hideEvent(QHideEvent *event).
[virtual] void QComboBox:: hidePopup ()
Hides the list of items in the combobox if it is currently visible and resets the internal state, so that if the custom pop-up was shown inside the reimplemented showPopup(), then you also need to reimplement the hidePopup() function to hide your custom pop-up and call the base class implementation to reset the internal state whenever your custom pop-up widget is hidden.
[virtual protected] void QComboBox:: initStyleOption ( QStyleOptionComboBox *option) const
Initialize option with the values from this QComboBox. This method is useful for subclasses when they need a QStyleOptionComboBox, but don’t want to fill in all the information themselves.
[override virtual protected] void QComboBox:: inputMethodEvent ( QInputMethodEvent *e)
Reimplements: QWidget::inputMethodEvent(QInputMethodEvent *event).
[override virtual] QVariant QComboBox:: inputMethodQuery ( Qt::InputMethodQuery query) const
void QComboBox:: insertItem ( int index, const QString &text, const QVariant &userData = QVariant())
Inserts the text and userData (stored in the Qt::UserRole) into the combobox at the given index.
If the index is equal to or higher than the total number of items, the new item is appended to the list of existing items. If the index is zero or negative, the new item is prepended to the list of existing items.
void QComboBox:: insertItem ( int index, const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
Inserts the icon, text and userData (stored in the Qt::UserRole) into the combobox at the given index.
If the index is equal to or higher than the total number of items, the new item is appended to the list of existing items. If the index is zero or negative, the new item is prepended to the list of existing items.
void QComboBox:: insertItems ( int index, const QStringList &list)
Inserts the strings from the list into the combobox as separate items, starting at the index specified.
If the index is equal to or higher than the total number of items, the new items are appended to the list of existing items. If the index is zero or negative, the new items are prepended to the list of existing items.
void QComboBox:: insertSeparator ( int index)
Inserts a separator item into the combobox at the given index.
If the index is equal to or higher than the total number of items, the new item is appended to the list of existing items. If the index is zero or negative, the new item is prepended to the list of existing items.
QVariant QComboBox:: itemData ( int index, int role = Qt::UserRole) const
Returns the data for the given role in the given index in the combobox, or an invalid QVariant if there is no data for this role.
QAbstractItemDelegate *QComboBox:: itemDelegate () const
Returns the item delegate used by the popup list view.
QIcon QComboBox:: itemIcon ( int index) const
Returns the icon for the given index in the combobox.
QString QComboBox:: itemText ( int index) const
Returns the text for the given index in the combobox.
[override virtual protected] void QComboBox:: keyPressEvent ( QKeyEvent *e)
[override virtual protected] void QComboBox:: keyReleaseEvent ( QKeyEvent *e)
QLineEdit *QComboBox:: lineEdit () const
Returns the line edit used to edit items in the combobox, or nullptr if there is no line edit.
Only editable combo boxes have a line edit.
[override virtual] QSize QComboBox:: minimumSizeHint () const
Reimplements an access function for property: QWidget::minimumSizeHint.
QAbstractItemModel *QComboBox:: model () const
Returns the model used by the combobox.
[override virtual protected] void QComboBox:: mousePressEvent ( QMouseEvent *e)
[override virtual protected] void QComboBox:: mouseReleaseEvent ( QMouseEvent *e)
[override virtual protected] void QComboBox:: paintEvent ( QPaintEvent *e)
Reimplements: QWidget::paintEvent(QPaintEvent *event).
void QComboBox:: removeItem ( int index)
Removes the item at the given index from the combobox. This will update the current index if the index is removed.
This function does nothing if index is out of range.
[override virtual protected] void QComboBox:: resizeEvent ( QResizeEvent *e)
Reimplements: QWidget::resizeEvent(QResizeEvent *event).
QModelIndex QComboBox:: rootModelIndex () const
Returns the root model item index for the items in the combobox.
void QComboBox:: setCompleter ( QCompleter *completer)
Sets the completer to use instead of the current completer. If completer is nullptr , auto completion is disabled.
By default, for an editable combo box, a QCompleter that performs case insensitive inline completion is automatically created.
Note: The completer is removed when the editable property becomes false , or when the line edit is replaced by a call to setLineEdit(). Setting a completer on a QComboBox that is not editable will be ignored.
void QComboBox:: setItemData ( int index, const QVariant &value, int role = Qt::UserRole)
Sets the data role for the item on the given index in the combobox to the specified value.
void QComboBox:: setItemDelegate ( QAbstractItemDelegate *delegate)
Sets the item delegate for the popup list view. The combobox takes ownership of the delegate.
Any existing delegate will be removed, but not deleted. QComboBox does not take ownership of delegate.
Warning: You should not share the same instance of a delegate between comboboxes, widget mappers or views. Doing so can cause incorrect or unintuitive editing behavior since each view connected to a given delegate may receive the closeEditor() signal, and attempt to access, modify or close an editor that has already been closed.
void QComboBox:: setItemIcon ( int index, const QIcon &icon)
Sets the icon for the item on the given index in the combobox.
void QComboBox:: setItemText ( int index, const QString &text)
Sets the text for the item on the given index in the combobox.
void QComboBox:: setLineEdit ( QLineEdit *edit)
Sets the line edit to use instead of the current line edit widget.
The combo box takes ownership of the line edit.
Note: Since the combobox’s line edit owns the QCompleter, any previous call to setCompleter() will no longer have any effect.
[virtual] void QComboBox:: setModel ( QAbstractItemModel *model)
Sets the model to be model. model must not be nullptr . If you want to clear the contents of a model, call clear().
Note: If the combobox is editable, then the model will also be set on the completer of the line edit.
void QComboBox:: setRootModelIndex (const QModelIndex &index)
Sets the root model item index for the items in the combobox.
void QComboBox:: setValidator (const QValidator *validator)
Sets the validator to use instead of the current validator.
Note: The validator is removed when the editable property becomes false .
void QComboBox:: setView ( QAbstractItemView *itemView)
Sets the view to be used in the combobox popup to the given itemView. The combobox takes ownership of the view.
Note: If you want to use the convenience views (like QListWidget, QTableWidget or QTreeWidget), make sure to call setModel() on the combobox with the convenience widgets model before calling this function.
[override virtual protected] void QComboBox:: showEvent ( QShowEvent *e)
Reimplements: QWidget::showEvent(QShowEvent *event).
[virtual] void QComboBox:: showPopup ()
Displays the list of items in the combobox. If the list is empty then no items will be shown.
If you reimplement this function to show a custom pop-up, make sure you call hidePopup() to reset the internal state.
[override virtual] QSize QComboBox:: sizeHint () const
Reimplements an access function for property: QWidget::sizeHint.
This implementation caches the size hint to avoid resizing when the contents change dynamically. To invalidate the cached value change the sizeAdjustPolicy.
const QValidator *QComboBox:: validator () const
Returns the validator that is used to constrain text input for the combobox.
QAbstractItemView *QComboBox:: view () const
Returns the list view used for the combobox popup.
[override virtual protected] void QComboBox:: wheelEvent ( QWheelEvent *e)
Reimplements: QWidget::wheelEvent(QWheelEvent *event).
© 2022 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.
скрыть и показать lineEdit с QComboBox в Qt
Мне нужно создать приложение, которое будет работать с базой данных, и мне нужно соединить QCombobox с lineEdits (1,2,3). У меня есть QComboBox с двумя элементами (1,2), и я хочу скрыть lineEdits (2,3), когда я перехожу на элемент 2. И когда я возвращаюсь к элементу 1, я хочу показать lineEdits (2,3) и скрыть lineEdit 1. Кто-нибудь может мне помочь? Спасибо
Решение
Вы просто подключаете сигнал currentIndexChanged (int index) вашего QComboxBox к слоту в вашем классе и скрываете / отображаете QLineEdit в зависимости от значения индекса.
Слот может быть реализован следующим образом:
Обратите внимание, что ваш класс должен быть подклассом QObject, чтобы слот работал. Если вы не знаете, как работают сигналы и слоты, я бы рекомендовал сначала прочитать учебник.
QComboBox with click to lineEdit
I wish derived class from QComboBox with following additional feature:
When user clicks to QLiineEdit of this combo box, the effect have to be the same as click to arrow on the right side of combo box (showPopup() method).
My attemption is:
But, when I press lineEdit, it shows popup, but after releasing mouse button it vanishes.
1 Answer 1
Please, revise the documentation of the event handler. As you show pop-up menu in this function, then the release event will conflict hastily. I can’t predict your implementation of showPopup() , but please don’t create a pop-up menu inside it. You may show, hide, assign, but NEVER create.
Qt5 Widgets
In this part of the Qt5 C++ programming tutorial, we will talk about some basic Qt5 widgets. We have examples for the QLabel , QSlider , QComboBox , QSpinBox , QLineEdit , and QMainWindow widgets.
Widgets are basic building blocks of a GUI application. Qt5 library has a rich set of various widgets.
Advertisements Qt5 QLabel
QLabel is used to display text and image. No user interaction is available. The following example displays text.
This is a header file for our code example.
We use QLabel widget to display lyrics in a window.
We create a label widget and set a specific font for it.
This is the main file. Figure: QLabel Advertisements
Qt5 QSlider
QSlider is a widget that has a simple handle. This handle can be pulled back and forth. This way we are choosing a value for a specific task.
The header file for the example.
We display two widgets: a slider and a label. The slider controls the number displayed in the label.
A horizontal QSlider is created.
In this code line, we connect the valueChanged signal to the label’s built-in setNum slot. Since the setNum method is overloaded, we use a qOverload to choose the correct method.
This is the main file. Figure: QSlider
Advertisements Qt5 QComboBox
QComboBox is a widget which presents a list of options to the user in a way that takes up the minimum amount of screen space. It is a selection widget that displays the current item, and can pop up a list of selectable items. A combobox may be editable, allowing the user to modify each item in the list.
We work with two widgets: a combo box and a label.
In the example, a selected item from the combo box is shown in the label.
A QStringList stores the data of the combo box. We have a list of Linux distributions.
A QComboBox is created and the items are inserted with the addItems method.
The activated signal of the combo box is plugged to the label’s setText slot.
This is the main file of the application.
Advertisements Figure: QComboBox
Qt5 QSpinBox
QSpinbox is a widget that is used to handle integers and discrete sets of values. In our code example, we will have one spinbox widget. We can choose numbers 0..99. The currently chosen value is displayed in a label widget.
This is the header file for the spinbox example.
We place a spinbox on the window and connect its valueChanged signal to the QLabel’s setNum slot.
We need to use qOverload twice because both the signal and the slot are overloaded.
This is the main file. Figure: QSpinBox
Qt5 QLineEdit
QLineEdit is a widget that allows to enter and edit a single line of plain text. There are undo/redo, cut/paste and drag & drop functions available for QLineEdit widget.
In our example, we show three labels and three line edits.
The header file for the example.
We display three labels and three line edits. These widgets are organized with the QGridLayout manager.
This is the main file. Figure: QLineEdit Advertisements
Statusbar
A statusbar is a panel that is used to display status information about the application.
In our example, we have two buttons and a statusbar. Each of the buttons shows a message if we click on them. The statusbar widget is part of the QMainWindow widget.
The header file for the example.
This is the statusbar.cpp file.
The QFrame widget is put into the center area of the QMainWindow widget. The central area can take only one widget.
We create two QPushButton widgets and place them into a horizontal box. The parent of the buttons is the frame widget.
To display a statusbar widget, we call the statusBar method of the QMainWindow widget.
The showMessage method shows the message on the statusbar. The last parameter specifies the number of milliseconds that the message is displayed on the statusbar.
This is the main file. Figure: Statusbar example
In this part of the Qt5 tutorial, we have introduced several Qt5 widgets.
QComboBox редактировать LineEdit, когда PopUp активен
У меня есть QComboBox, заполненный некоторыми данными. Я хочу отредактировать lineEdit comboBox, и когда я делаю это, чтобы comboBox отображал его всплывающее окно во время редактирования. Проблема в том, что я потерял фокус на редактировании строки, и я могу написать только одно письмо за раз.
Это то, что я делаю на тривиальном уровне:
Также, если я использую blockSignal на lineEdit, пока я показываю, всплывающее окно бесполезно. Какие-либо предложения?
РЕДАКТИРОВАТЬ
Кажется, мне нужно предоставить некоторые дополнительные детали. Я должен быть в состоянии написать целое слово за раз, не теряя фокус, когда я использую ui->comboBox->showPopUp() в currentTextChanged сигнал.
Или, проще говоря: курсор не должен исчезать из QLineEdit после того, как сигнал испущен и всплывающее окно отображается.
Решение
Вы должны получить свой собственный класс поля со списком из QComboBox и переопределить showPopup() виртуальный метод, чтобы вернуть фокус обратно на строку редактирования.
В особом случае время QTimer с таймаутом 0 истечет
так как все события в очереди событий оконной системы были
обработанный.
РЕДАКТИРОВАТЬ:
Это работает (хотя можно считать это взломом):
Но лично я бы, наверное, использовал отдельный QMenu для отображения списка слов, а не всплывающее меню со списком.
Другие решения
Каждый комбинированный список имеет значение по умолчанию QCompleter это может показать варианты завершения во всплывающем окне. Я думаю, что вы можете достичь того, что вы хотите, установив этот режим завершения PopupCompletion ,
В этом случае в поле со списком будут отображаться соответствующие варианты при вводе. Если ты хочешь это перечислить все предметы из списка, Я думаю, что вы должны реализовать пользовательский QCompleter, который соответствует всем элементам независимо от того, какие пользовательские типы.
Когда я смотрю в коде QCombobox, я вижу следующее внутри кода showPopup:
Так что, возможно, если вы выполните следующее (здесь не тестировалось), вы можете получить желаемый результат: