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...

    0_1559060742508_Screenshot from 2019-05-28 13-17-00.png )



  • Olá @MSDiLieto

    QWidget::setFocus() é uma função SLOT, portanto você conecta-la a um sinal como por exemplo QPushButton::Clicked() e QLineEdit::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-prop

    Se 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



  • Mais uma vez muito obrigado Smath!! Pesquisei no SLOT, mas n tinha visto essa funcao.. Obrigadao!


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.