ich habe zwei QLineEdit
Widgets, edt1
und edt2
. Jedes QLineEdit kann nur zwei Ziffern annehmen. Nachdem ich xx (z. B. 10) in eingegeben habe edt1
, die das Eingabekriterium erfüllen können, wie der Fokus geändert werden kann edt1
zu edt2
automatisch.
Gibt es eine eingebaute Funktion, um dies zu ermöglichen? Oder kann jemand etwas dazu sagen? Vielen Dank.
Antworten:
1 für die Antwort № 1Sie müssen überprüfen, ob edt1.hasAcceptableInput()
jedes Mal textChanged()
Signal wird ausgegeben und angerufen edt2.setFocus()
wenn es so ist
#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();
}