DateValidator

Code-Schnippsel, oder Tipps und Tricks, die einem beim Programmieren mit Qt helfen können.
Antworten
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

DateValidator

Beitrag 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
Dateianhänge
Eingabe von Datum
Eingabe von Datum
ZinsenEdit.jpg (57.17 KiB) 23247 mal betrachtet
datevalidator.zip
Ordner enthält :
datevalidator.h
datevalidator.cpp
(7.05 KiB) 988-mal heruntergeladen
kalenderimpl.zip
Ordner enthält
kalenderimpl.cpp
kalenderimpl.h
kalender.ui
(19.4 KiB) 1002-mal heruntergeladen
markusd112
Beiträge: 33
Registriert: 30. Dezember 2012 18:25

Re: DateValidator

Beitrag 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
markusd112
Beiträge: 33
Registriert: 30. Dezember 2012 18:25

Re: DateValidator

Beitrag 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
Dateianhänge
datevalidator_Qt4.8.zip
DateValidator angepasst für Qt 4.8
(7.03 KiB) 1112-mal heruntergeladen
Antworten