QWidget::setFocus() como usar?
-
Boa tarde a todos! Estou criando um menu basico, e a cada pagina de menu, existem uns 5 PushButton. Alguns pushButton seriam opcoes para entrar em um QLineEdit e manipular uma variavel numerica ou IP. O que eu queria e' q ao chegar em tal botao, se eu clicar ENTER, o foco pularia para o QLineEdit do seu botao. Pois o que esta acontecendo agora, e' que ele consegue entrar no QLineEdit apenas apos passar por todos os botoes!
Esse e' o menu... -
Olá @MSDiLieto
QWidget::setFocus()
é uma função SLOT, portanto você conecta-la a um sinal como por exemploQPushButton::Clicked()
eQLineEdit::editingFinished()
// PushButton -> LineEdit connect(ui->pushButton, SIGNAL(clicked()), ui->lineEdit, SLOT(setFocus())); connect(ui->lineEdit, SIGNAL(returnPressed()), ui->pushButton, SLOT(setFocus())); // PushButton_2 -> LineEdit_2 connect(ui->pushButton_2, SIGNAL(clicked()), ui->lineEdit_2, SLOT(setFocus())); connect(ui->lineEdit_2, SIGNAL(returnPressed()), ui->pushButton_2, SLOT(setFocus()));
Entretanto, saiba que por padrão o QPushButton não reconhece a tecla Enter como acionador, ao invés disso, é utilizado a tecla Space.
A tecla Enter só será conhecida por botões que possuem o atributo AutoDefault como true.
https://doc.qt.io/qt-5/qpushbutton.html#default-propSe você prefere acionar o evento de clique desses botões pela tecla Enter então eu recomendo que você sobreescreva o evento keyEvent de uma classe derivada de QPushButton. Em seguida, você pode promover essa classe customizada para os seus botões.
Dê uma olhada nesse tópico.
https://forum.qt.io/topic/102343/how-to-get-promoted-widget-to-show/2