2016-10-21 14 views
0

私は2つのQLineEditウィジェット、edt1edt2を持っています。各QLineEditは2桁しか受け入れられません。入力基準を満たすことができる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

関連する問題