/ / Wie kann der Fokus von QLineEdit automatisch auf ein anderes QLineEdit geändert werden, nachdem die Eingabe ein Kriterium erfüllt? - qt, Fokus, qlineedit

Wie kann der Fokus von QLineEdit automatisch auf ein anderes QLineEdit geändert werden, nachdem die Eingabe ein Kriterium erfüllt? - qt, Fokus, qlineedit

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 № 1

Sie 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();
}