QCompleter принудительно выполняет двойной ввод

У меня есть QCompleter, который заставляет моих пользователей дважды нажимать Enter, когда всплывающее окно видно, но не используется для выбора элемента. Модель для QComboBox, связанного с завершенным, используется в качестве модели для завершающего.

 QCompleter *completer = new QCompleter(this);
 completer->setCaseSensitivity(Qt::CaseInsensitive);
 completer->setCompletionMode(QCompleter::PopupCompletion);
 completer->setModel(this->ui->comboBox->model());
 this->ui->comboBox->setCompleter(completer);

По мере того, как пользователь вводит элементы, список возможных завершений растет. Если они начинают вводить короткие дополнения (например, «dir») там, где доступны более длинные завершения, и они нажимают, не выбирая ничего из всплывающего окна (т. е. ни активировано, ни выделено, ни indexchanged не срабатывает), то они вынуждены снова нажать Enter, чтобы обработать введенный текст. Есть ли простой способ обойти это?

Благодарность


person Gerald    schedule 09.02.2010    source источник
comment
Я написал программу быстрого тестирования, но не смог воспроизвести вашу проблему. Когда я нажимаю Enter один раз, срабатывает сигнал activated(const QString&), даже если всплывающее окно полностью видно. Какую версию Qt вы используете? Какую ОС вы используете?   -  person RA.    schedule 10.02.2010


Ответы (1)


Я пробовал это с Qt 4.6.2 и Visual 2008, и ситуация, которую вы описываете, не происходит. проект доступен, если вы хотите попробовать.

Скомпилируйте, запустите, введите «что-то», затем вернитесь в поле со списком: оно зарегистрировано, введите «некоторые» и вернитесь: теперь в вашем поле со списком есть «некоторые» и «где-то».

person Bruce    schedule 14.04.2011