Anzeige:
Ergebnis 1 bis 4 von 4

Thema: user input überprüfen

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.08.2004
    Beiträge
    749

    user input überprüfen

    Hallo,
    wie kann ich denn einfach den user input in einem labeledit feld einfach darauf prüfen dass es sich nur um einen int/float handelt ...

    also falls das feld leer ist oder ein zeichen ist dann sollte eine meldung kommen...

    danke

  2. #2
    Registrierter Benutzer
    Registriert seit
    17.05.2003
    Beiträge
    226
    Hallo Mat,

    du kannst dafür QInputDialog benutzen. Dort erfolgt eine automatische Überprüfung, allerdings keine Fehlermeldung. Man kann dort nur Zahlen eingeben. Bei allen anderen Zeichen erscheint einfach gar nichts.

    Falls du die Fehlermeldung unbedingt brauchst, benutze QValidator und QRegExp. Bei einem QLineEdit gibt es auch schon entsprechende Funktionen: hasAcceptableInput() und setValidator ( const QValidator * v ). Dann eine QMessage ausgeben, falls die Eingabe nicht ok ist.

    Schöne Grüße,
    Kirstin

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.08.2004
    Beiträge
    749
    ah ja ok......
    mir ist nur unklar wie ich den return wert von validator benutzen kann....
    denn er liefert ja acceptable, intermediate oder invalid

    habe gelesen dass das widget dann von selbst aufpasst? Aber das tut es bei mir nicht obwohl die syntax stimmt ???
    Geändert von Mat (07-11-2005 um 19:51 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    17.05.2003
    Beiträge
    226
    Hallo Mat,

    beim QInputDialog passt das Fenster selber auf.

    Ansonsten kannst du abtesten, ob valid oder invalid zurückgegeben wird. Bei valid ist die Eingabe ok, bei invalid nicht. Hier mal ein Beispiel:

    connect( table, SIGNAL( valueChanged(int,int) ), this, SLOT( slotCheckEntry(int,int) ) );

    Wenn also ein Wert geändert wird, wird der Slot zum Überprüfen aufgerufen.


    // Diese Funktion testet die Eingabe in einer Tabelle

    void MyWidget::slotCheckEntry( int i, int j )
    {
    QRegExpValidator validator( QRegExp("[abc]", true, false ),this, 0 );

    QString entry = table->text( i, j ); // Eintrag in der Tabelle testen
    int pos = 0; // nur die erste position testen, kann man ja anpassen

    if( validator.validate( entry, pos ) == QValidator::Acceptable )
    {
    table->setText( i, j, entry.upper() ); // oder gar nichts, weil ja die Eingabe ok war
    }
    else
    {
    QMessageBox::warning ( this, "Wrong input", "This input is not allowed.\nPlease use one a,b or c", QMessageBox::Ok , 0, 0 );
    table->clearCell( i, j ); // Zelle löschen
    }
    }

    Als regulären Ausdruck kannst du dann entsprechend alle Ziffern eintragen. Am einfachsten ist aber wirklich QInputDialog.

    Schöne Grüße,
    Kirstin

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •