Seite 1 von 1

DateValidator

Verfasst: 4. Oktober 2005 18:06
von ArneStocker
Hi

hier eine Klasse DateValidator, die ich zusammen mit QLineEdit verwende, weil mir QDateEdit nicht gefällt. Man kann sich das Trennzeichen aussuchen (01-02-2005 oder 01.02.2005 oder was auch immer...natürlich keine Zahl) und eine Jahrhundergrenze eingeben

Jahrhundergrenze = 50
-> Die Eingabe von 010249 führt zu 01.02.2049
-> Die Eingabe von 010250 führt zu 01.02.1950
ansonsten einfach die Klasse mal ausprobieren.

Code: Alles auswählen

    DateValidator *pDateValidator = new DateValidator(this,"Date");             // this gleich aktuelles Widget
    pDateValidator->SetLineEdit( ... Zeiger auf irgendein Lineedit ...)
    pDateValidator->SetLineEdit( ... Zeiger auf das nächste Lineedit ...)

    // bei bedarf
    connect(pDateValidator,SIGNAL(dateChanged(const QDate&), this, SLOT(...)));
PS. habe heute eine neue Version eingespielt, die besser kommentiert ist.

Gruss Arne

PPS.: Ich habe dem Attachment auch die Klasse Kalender zugefügt (die ist leider sehr alt und ausgesprochen schlecht strukturiert und kommentiert. Die Klasse stellt ein Kalenderwidget zur Verfügung. Es müssen nur der Zeiger auf QLineEdit und QTooBar übergeben werden, den Rest besorgt die Kalender Klasse (auch den Einsat des DateValidators).

Code: Alles auswählen

    // .. klassendeklaration
    Kalender  *m_pZinsBeginnKalender;
    Kalender  *m_pZinsEndeKalender;
    
    // Kalender initialisieren
    m_pZinsBeginnKalender = new Kalender(this);
    m_pZinsEndeKalender = new Kalender(this);
    m_pZinsEndeKalender->SetLoeschbar(true);
    m_pZinsEndeKalender->DeleteDatum();
    m_pZinsBeginnKalender->ConnectToControl(ZinsBeginnControl,ZinsBeginnDatum);
    m_pZinsEndeKalender->ConnectToControl(ZinsEndeControl,ZinsEndeDatum);

    connect(m_pZinsBeginnKalender, SIGNAL( dateChanged(const QDate&) ), this, SLOT( DatumChanged() ) );
    connect(m_pZinsEndeKalender, SIGNAL( dateChanged(const QDate&) ), this, SLOT( DatumChanged() ) );
Designer
QToolBar *ZinsBeginnControl, *ZinsEndeControl;
QLineEdit *ZinsBeginnDatum;*ZinsEndeDatum;

Man kann das Datum auch als QDate auslesen oder durch Übergabe von QDate Objekten manipulieren.

Allerdings ist die Klasse noch für Qt3.x geschrieben, es muss daher aus dem *.ui File mit dem ui-compiler die Basisklasse für KalenderWidget gebaut werden. Unter kann man sehen wie es aussieht

PPPS: das kleine Bildchen bringt die Klasse mit, die Toobluttons können also leer sein

Re: DateValidator

Verfasst: 6. Februar 2013 12:08
von markusd112
Hallo,

unter Qt 4.8 lässt sich der Validator nicht übersetzen, da es scheinbar u.a. in der QString Klasse im Laufe der Qt-Versions-Updates Änderungen gab...

Hast Du eine aktuellere Version, die auch unter Qt 4.8 läuft?

Danke & viele Grüße

Markus

Re: DateValidator

Verfasst: 7. Februar 2013 17:58
von markusd112
Hallo,

so, ich habe mal nach bestem Wissen und Gewissen alle vom Compiler angemeckerten Punkte bereinigt, so dass es sich unter Qt 4.8 nutzen lässt.

Gruß

Markus