QIntValidator verbunden mit QLineEdit, Status abfragen
Verfasst: 5. März 2011 01:50
Hallo zusammen,
nachdem ich mit C++ lediglich für HPCs und damit Konsolenprogramme programmiert habe, möchte ich nun anfangen auch für meinen Desktop zuhause Anwendungen zu schreiben. Also mache ich mich gerade fit in Qt.
Eine Verwirrung, auf die ich gestoßen bin:
Ich habe ein QLineEdit ("HourEd") verbunden mit einem QIntValidator, sodass nur Ganzzahlen akzeptiert werden. Diese Verbindung schaffe ich im Konstruktor des Hauptfensters:
Bei jeder Änderung im QLineEdit möchte ich nun einen anderen Wert aktualisieren, der vom Inhalt des LineEdits abhängt. Davor muss ich aber natürlich prüfen, ob dieser auch gültig ist (d.h. nicht nur QValidator::Intermediate (z.B. leerer string), sondern QValidator::Acceptable)
Wie prüfe ich nun diese Gültigkeit?
Ich suche nach einer art "HourEd->validator()->Status == QValidator::Acceptable"
Hier erstmal der Code, wie ich ihn momentan im textChanged-Event von HourEd habe:
Wie man sieht, ist das etwas um die Ecke programmiert. Ich mache pro Tastendruck nochmal extra eine validation mit dem Text in HourEd. Wenn der QIntValidator aber doch schon mit HourEd verbunden ist, muss es doch eine Möglichkeit geben, seinen aktuellen Status einfach abzufragen, ohne nochmal eine zusätzliche Prüfung vorzunehmen? Für mich wirkt das so, als würde ich QIntValidator nicht richtig benutzen, bzw. zu umständlich.
Vielleicht kann mich ja jemand aufklären
MfG
Spinoza
PS Die Möglichkeit mit der SpinBox ist mir bekannt, aber ich will ja Qt bzw. hier den Umgang mit QValidator lernen
nachdem ich mit C++ lediglich für HPCs und damit Konsolenprogramme programmiert habe, möchte ich nun anfangen auch für meinen Desktop zuhause Anwendungen zu schreiben. Also mache ich mich gerade fit in Qt.
Eine Verwirrung, auf die ich gestoßen bin:
Ich habe ein QLineEdit ("HourEd") verbunden mit einem QIntValidator, sodass nur Ganzzahlen akzeptiert werden. Diese Verbindung schaffe ich im Konstruktor des Hauptfensters:
Code: Alles auswählen
QIntValidator *intvalidator = new QIntValidator(this);
ui->HourEd->setValidator(intvalidator);Wie prüfe ich nun diese Gültigkeit?
Ich suche nach einer art "HourEd->validator()->Status == QValidator::Acceptable"
Hier erstmal der Code, wie ich ihn momentan im textChanged-Event von HourEd habe:
Code: Alles auswählen
void MainWindow::on_HourEd_textChanged(QString )
{
QString str = ui->HourEd->text();
int dummyint;
if (ui->HourEd->validator()->validate(str, dummyint) == QValidator::Acceptable)
{
/* Hier anderen Wert aktualisieren */
}
}Vielleicht kann mich ja jemand aufklären
MfG
Spinoza
PS Die Möglichkeit mit der SpinBox ist mir bekannt, aber ich will ja Qt bzw. hier den Umgang mit QValidator lernen