Показать все элементы 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 ивенты. Есть идеи?