Показать все элементы QCompleter при нажатии

Есть QComboBox с QCompleter'ом. Необходимо при нажатии на LineEdit комбобокса показывать все элементы комплитера. Есть такой код:

completer = new QCompleter(this);
completer->setModel(assignment_contacts);
completer->setCompletionMode(QCompleter::CompletionMode::PopupCompletion);
completer->popup()->setStyleSheet("background-color:rgb(54, 57, 63);"
                                  "color:white;");
QFont popupFont = QFont("Segoe UI",12,2);
completer->popup()->setFont(popupFont);


ui->comboBox_NewClientContacts->setEditable(true);
ui->comboBox_NewClientContacts->setInsertPolicy(QComboBox::NoInsert);
ui->comboBox_NewClientContacts->setModel(assignment_contacts);
ui->comboBox_NewClientContacts->setModelColumn(1);
ui->comboBox_NewClientContacts->completer()->setCompletionColumn(1);

ui->comboBox_NewClientContacts->setCompleter(completer);
ui->comboBox_NewClientContacts->lineEdit()->installEventFilter(this);  <-----

В последней строке устанавливаю EventFilter, его код:

bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
    if (object == ui->comboBox_NewClientContacts->lineEdit()){
        if(event->type() == QEvent::MouseButtonPress){
            ui->comboBox_NewClientContacts->lineEdit()->completer()->setCompletionPrefix(ui->comboBox_NewClientContacts->lineEdit()->text());
            ui->comboBox_NewClientContacts->lineEdit()->completer()->complete();
        }
    }
    return false;
}

Работает ПРАКТИЧЕСКИ должным образом, нажимаешь - показывается полный список элементов, но это работает единажды, при последующем полном стирании текста, снова ничего нет, и необходимо вновь нажимать мышкой. Пытался решить эту проблему с помощью focusIn ивента, но не работает, почему-то lineEdit() не ловит Focus ивенты. Есть идеи?


Ответы (0 шт):