Qt: Как сместить фокус курсора на поле в диалоговом окне / инструменте «Поиск» после его отображения? - PullRequest
0 голосов
/ 04 января 2019

Я работаю над проектом текстового редактора, и инструмент поиска в настоящее время выглядит следующим образом при запуске:

enter image description here

Мне интересно, как я мог бы сместить фокус курсора приложения / текста, чтобы он автоматически попал в поле «Найти что», как только я show установил диалоговое окно (типа QDialog).

В настоящее время, как вы можете видеть, текстовый курсор остается внутри документа, поэтому пользователь должен вручную щелкнуть инструмент «Поиск», чтобы начать поиск, что немного удобно. Я попытался возиться с методом setFocus моего диалогового окна, но это не помогло.

1 Ответ

0 голосов
/ 05 января 2019

Чтобы активировать фокус в QDialog, сделайте следующее:

void MainWindow::on_actionFind_triggered()
{
    if(findDialog->isHidden())
    {
        findDialog->show();
        findDialog->activateWindow();
        findDialog->raise();
        findDialog->setFocus();
    }
}

Но по умолчанию фокусом будет QPushButton, поэтому для изменения этого поведения он должен быть установлен как прокси QDialog для QLineEdit.

lineEdit = new QLineEdit();
setFocusProxy(lineEdit); // <---
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...