Saltar al contenido

Establecer el enfoque de QLineEdit en Qt

Solución:

El enfoque del teclado está relacionado con el orden de tabulación del widget y el orden de tabulación predeterminado se basa en el orden en que se construyen los widgets. Por lo tanto, la creación de más widgets cambia el enfoque del teclado. Es por eso que debes hacer el QWidget::setFocus llame al último.

Consideraría usar una subclase de QWidget para su ventana principal que anula el showEvent función virtual y luego establece el foco del teclado en la lineEdit. Esto tendrá el efecto de dar siempre la lineEdit enfoque cuando se muestra la ventana.

Otro truco que podría funcionar es usar el singleshot Temporizador:

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

Efectivamente, esto invoca la setFocus() ranura de la QLineEdit instancia justo después de que el sistema de eventos sea “libre” para hacerlo, es decir, en algún momento después de que el widget esté completamente construido.

Quizás esta sea una actualización, ya que la última respuesta fue en 2012 y el OP editó la pregunta por última vez en 2014. La forma en que hice que esto funcionara fue cambiar la política y luego establecer el enfoque.

line->setFocusPolicy(Qt::StrongFocus);
line->setFocus();
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *