我有两个QLineEdit
小部件,edt1
和edt2
。每个QLineEdit只能接受两位数。在edt1
中输入xx(例如10)后,可以满足输入条件,如何自动将焦点从edt1
更改为edt2
。
是否有用于实现此功能的内置功能?或者,任何人都可以提供有关如何做到这一点的事情?谢谢。
答案 0 :(得分: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();
}