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.