Установите фокус QLineEdit в QT

Эта ошибка обычно возникает при установке нового модуля (пока открыт упаковщик). Во-первых, вы можете попытаться закрыть ваш упаковщик и запустить реакцию-родной run-ios. Если этот подход не помогает, вы можете попробовать удалить каталог модулей узла и снова установить npm. Но я верю, что первый подход сработает.

21
задан sashoalm 27 March 2014 в 08:42
поделиться

3 ответа

Клавиатурный фокус связан с виджетом порядок вкладки, и порядок вкладки по умолчанию основан на порядке, в котором виджеты создаются . Поэтому создание большего количества виджетов изменяет клавиатурный фокус. Именно поэтому необходимо сделать QWidget::setFocus вызов в последний раз.

я рассмотрел бы использование подкласса QWidget для Вашего главного окна, которое переопределяет showEvent виртуальная функция и затем устанавливает клавиатурный фокус на lineEdit. Это будет иметь эффект всегда предоставления эти lineEdit фокус, когда окно покажут.

24
ответ дан 29 November 2019 в 06:54
поделиться

В QT setFocus () слот, можно попробовать другой перегруженный метод, который берет QT:: параметр FocusReason как строка, показанная ниже:

line->setFocus(Qt::OtherFocusReason);

можно считать о причине фокуса опции в следующей ссылке:

http://doc.trolltech.com/4.4/qt.html#FocusReason-enum

1
ответ дан 29 November 2019 в 06:54
поделиться

Другой прием, который мог бы работать, при помощи singleshot таймер:

QTimer::singleShot(0, line, SLOT(setFocus()));

Эффективно, это вызывает setFocus() слот QLineEdit экземпляр прямо после того, как система событий "свободна" сделать так, т.е. когда-то после того, как виджет полностью создается.

25
ответ дан 29 November 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: