Saltar al contenido

Establecer el foco QLineEdit en Qt

Este grupo de especialistas despúes de ciertos días de investigación y recopilar de información, dieron con la solución, deseamos que te sea de gran utilidad para tu proyecto.

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. Por eso debes hacer la QWidget::setFocus llamar al último

Consideraría usar una subclase de QWidget para su ventana principal que anula la showEvent función virtual y luego establece el enfoque del teclado en la lineEdit. Esto tendrá el efecto de dar siempre la lineEdit foco 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();

Calificaciones y comentarios

Nos encantaría que puedieras difundir este escrito si te fue de ayuda.

¡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 *