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 17:15
Wohnort: Berlin

DateValidator

Beitrag von ArneStocker » 4. Oktober 2005 18:06

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
ZinsenEdit.jpg
Eingabe von Datum
ZinsenEdit.jpg (57.17 KiB) 6448 mal betrachtet
datevalidator.zip
Ordner enthält :
datevalidator.h
datevalidator.cpp
(7.05 KiB) 369-mal heruntergeladen
kalenderimpl.zip
Ordner enthält
kalenderimpl.cpp
kalenderimpl.h
kalender.ui
(19.4 KiB) 403-mal heruntergeladen

markusd112
Beiträge: 33
Registriert: 30. Dezember 2012 19:25

Re: DateValidator

Beitrag von markusd112 » 6. Februar 2013 13:08

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 19:25

Re: DateValidator

Beitrag von markusd112 » 7. Februar 2013 18:58

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) 450-mal heruntergeladen

Antworten