Как изменить фокус QLineEdit автоматически на другой QLineEdit после того, как ввод удовлетворяет критерию?
У меня два QLineEdit
виджеты, edt1
а также edt2
, Каждый QLineEdit может принимать только две цифры. После ввода хх (например, 10) в edt1
, который может удовлетворить входной критерий, как изменить фокус с edt1
в edt2
автоматически.
Есть ли встроенная функция, чтобы использовать это, чтобы это произошло? Или кто-нибудь может рассказать о том, как это сделать? Спасибо.
1 ответ
Решение
Вы должны проверить, если edt1.hasAcceptableInput()
каждый раз textChanged()
сигнал испускается, и вызов 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();
}