2016-10-21 2 views
0

두 개의 QLineEdit 위젯, edt1edt2이 있습니다. 각 QLineEdit는 두 자리 만 허용 할 수 있습니다. 입력 기준을 충족시킬 수있는 edt1에 xx (예 : 10)를 입력 한 후 edt1에서 edt2으로 포커스를 자동으로 변경하는 방법입력이 기준을 만족시킨 후에 QLineEdit의 포커스를 다른 QLineEdit으로 자동으로 변경하는 방법은 무엇입니까?

이 작업을 수행하는 데 사용할 수있는 함수가 내장되어 있습니까? 아니면 누구든지이 작업을 수행하는 방법에 대해 뭔가를 제공 할 수 있습니까? 고맙습니다.

답변

1

textChanged() 신호가 나올 때마다 edt1.hasAcceptableInput()인지 확인하고 edt2.setFocus()을 호출해야합니다.

#include <QtWidgets> 

int main(int argc, char** argv) 
{ 
    QApplication a{argc, argv}; 

    QWidget w; 
    QLineEdit lineEdit1; 
    QLineEdit lineEdit2; 
    //validator to accept two digits 
    QRegExpValidator validator{QRegExp{"\\d{2}"}}; 
    lineEdit1.setValidator(&validator); 
    lineEdit2.setValidator(&validator); 
    QVBoxLayout layout{&w}; 
    layout.addWidget(&lineEdit1); 
    layout.addWidget(&lineEdit2); 
    w.show(); 

    QObject::connect(&lineEdit1, &QLineEdit::textChanged, [&](){ 
     if(lineEdit1.hasAcceptableInput()) 
      lineEdit2.setFocus(); 
    }); 

    return a.exec(); 
} 
+0

감사합니다. 그것은 잘 작동합니다. – FzLbMj

관련 문제