Hallo Leute,
ich benutze Qt4
Folgende Anforderung hat sich ergeben:
In einer Maske soll ein Geb.-Datum eigegeben werden, dieses Feld
(ich dachte an QDateEdit) soll aber anfangs leer sein.
Das lässt sich aber nicht so darstellen: __.__.____ ?
Hat jemand ne Idee ?
Gruss TW.
Leeres QDateEdit Widget
-
CaptnChaos
- Beiträge: 605
- Registriert: 28. Juni 2007 15:01
- Kontaktdaten:
also mit dem QDateEdit gehts nicht, Wenn du aber ein LineEdit nimmst und die inputMask auf
setzt, siehts genauso aus wie du es willst.
mit _ werden die Leerräume ausgefüllt. lässt du es leer, sind es Leerzeichen.
Code: Alles auswählen
00:00:0000;_mit _ werden die Leerräume ausgefüllt. lässt du es leer, sind es Leerzeichen.
-
Thomas Walther
- Beiträge: 7
- Registriert: 5. September 2005 22:01
Leeres QDateEdit Widget
Hallo,
vielen Dank für die Lösung.
Da muss ich ja den fleissigen Programmierer in mir wecken,
die Fehleingaben (von wegen 32.12.07 oder 31.09.07) abfangen
und gleich ne Aenderung vorschlagen(zB Korrektur zu 30.09.07 usw).
Hat das schon mal jemand gemacht ? Ev. kann mir da jemand
mit n bissel Code aushelfen?!
Vielen Dank, TW
vielen Dank für die Lösung.
Da muss ich ja den fleissigen Programmierer in mir wecken,
die Fehleingaben (von wegen 32.12.07 oder 31.09.07) abfangen
und gleich ne Aenderung vorschlagen(zB Korrektur zu 30.09.07 usw).
Hat das schon mal jemand gemacht ? Ev. kann mir da jemand
mit n bissel Code aushelfen?!
Vielen Dank, TW
-
CaptnChaos
- Beiträge: 605
- Registriert: 28. Juni 2007 15:01
- Kontaktdaten:
spinbox neben das teil und dann einen slot wie folgt(noch nicht ausgereift, aber größtenteils klappts):
Code: Alles auswählen
connect(spinBox, SIGNAL(valueChanged(QString)), this, SLOT(setDate(QString)));Code: Alles auswählen
void Test::setDate(const QString &number)
{
QString tmp = lineEdit->displayText();
qDebug() << tmp.toAscii();
int pos = lineEdit->cursorPosition();
int a = tmp.indexOf(':', pos);
int b = tmp.lastIndexOf(':', pos);
if(a <= 0)
a = tmp.length();
if(b <= 0)
b = 0;
int length = a - b;
if(length == 2 && b == 0)
spinBox->setMaximum(31);
else if(length == 3 && b == 2)
spinBox->setMaximum(12);
else if(length == 5 && b == 5)
{
spinBox->setMinimum(1900);
spinBox->setMaximum(2100);
}
qDebug() << "a:" << QByteArray::number(a);
qDebug() << "b:" << QByteArray::number(b);
qDebug() << "length:" << QByteArray::number(length);
tmp.replace(b, length, number);
lineEdit->setText(tmp);
lineEdit->setSelection(b, length);
lineEdit->setCursorPosition(pos);
}-
CaptnChaos
- Beiträge: 605
- Registriert: 28. Juni 2007 15:01
- Kontaktdaten:
-
Thomas Walther
- Beiträge: 7
- Registriert: 5. September 2005 22:01
Leeres QDateEdit Widget
Vielen Dank fuer die Hilfe !!!
Ich werden es erst spaeter testen koennen.
Wenn ich was aendere stelle ich es dann hier ein.(kann etwas dauern)
M.f.G. an Alle, TW
Ich werden es erst spaeter testen koennen.
Wenn ich was aendere stelle ich es dann hier ein.(kann etwas dauern)
M.f.G. an Alle, TW