QComboBox :: showPopup () крадет фокус у его QLineEdit - PullRequest
0 голосов
/ 08 июля 2019

Чтобы создать QComboBox, который может фильтровать его список значений при вводе в него, я прикрепил слот к событию editTextChanged QComboBox, чтобы открыть всплывающее окно его представления, когда пользователь начинает печатать.Это делается так:

void SearchableComboBox::slotEditing(QString in_text)
{
    this->showPopup();
}

К сожалению, это сразу же крадет фокус у QLineEdit, и я больше не могу печатать.Вызов lineEdit () -> setFocus () не имеет значения, и я не хочу grabKeyboard (), поскольку это создает совершенно другой мир боли.Любые рекомендации?

1 Ответ

0 голосов
/ 08 июля 2019

Для этого используйте метод Focus Proxy.См. https://doc.qt.io/qt-5/qwidget.html#setFocusProxy

С этим всплывающее окно будет передавать свои входы на lineedit.

В вашем случае вы можете попробовать что-то вроде

this->setFocusProxy( this->lineEdit() );

Но, возможно, выследует прочитать, как использовать QCompleter.Это обеспечит автозаполнение при наборе текста и может быть полезно для вас.

...