2017-06-21 4 views
0

Ich versuche, zwei QDateEdits zu validieren. Ich habe zwei Felder, startdate und enddate und ich möchte bestätigen, dass das Mindestdatum von enddate das ausgewählte startdate Datum ist. Aber ich möchte auch dem Benutzer die Möglichkeit geben, dass das Feld enddate leer sein kann. I conected beiden FelderQDateEdit Validierungen

connect(startDate,SIGNAL(dateChanged(QDate)),endDate,SLOT(setMinDate(QDate))); 

startDate und endDate sind QDateEdit mit einem Pop-up-Kalender.

Also, wo ist das Problem hier ?? Wenn ich über endDate das minimale Datum klicke, ist es okay, aber der nächste Tag (fist gültiges Datum) erscheint in blauer Farbe wie es gewählt wurde, aber wenn ich über dieses Datum geklickt habe, schließt das Popup und das Datum ist nicht gesetzt. Beispiel:

Wenn ich das Formular öffne, hat das Feld startdate standardmäßig das aktuelle Datum. Später klicke ich auf endDate Feld und das minimal erlaubte Datum ist ein weiterer Tag, der es in Ordnung ist, aber dieses minimal erlaubte Datum ist blau markiert und wenn ich das Datum angeklickt habe, ist es nicht gesetzt.

Sorry, wenn mein Englisch ist es so schlimm, ich hoffe, dass Sie mir helfen können. Danke irgendwie

+0

Bitte geben Sie einen Code. – MrLeeh

Antwort

1

Ich habe gefunden, was mein Problem ist. Ich habe den Slot mit dem dateChanged(QDate) Signal verbunden, so dass standardmäßig das QDateEdit das erste erlaubte Datum als ausgewählt festlegt. Wenn Sie es also erneut auswählen, wird das Signal nicht gesendet und durch das Ergebnis wird das Datum nicht gesetzt. Meine Lösung ist Verwendung editingFinished() Signal statt dateChanged(QDate) Signal. Ich hoffe, es war hilfreich. Grüße,