Seite 1 von 1
qdialog geöffnet lassen
Verfasst: 6. Juli 2006 16:48
von chemstar
hallo leute,
habe ein kleineres problem. ich habe ein dialog mit feldern die unbedingt vollständig sein müssen.
ich führe den dialog mit if(dlg.exec() == QDialog::Accepted) aus. in diesem block findet eine überprüfung ger gültigkeit der einträge. nun wie kann ich ein dialog hierbei geöffnet lassen falls die einträge unvollständig sind?
danke!
Verfasst: 6. Juli 2006 18:19
von bigmil
Hi chemstar,
eine Möglichkeit wäre, wenn du dies nicht in der Klasse machst, in der du dein Dialog aufrufst, sondern direkt in deiner Dialog Klasse.
Dafür musst du zuerst das clicked() Signal des OK-Buttons mit einer SLOT Funktion abfangen. Nach deiner Überprüfung in dieser SLOT-Funktion kannst du dann mit accept() bestätigen und dein Dialog beenden.
Mit Qt 4.1.3:
In deiner Dialog Header Datei:
Code: Alles auswählen
private slots:
void on_okDlg_clicked(); // okDlg ist der Objektname des OK-Pushbuttons
In deiner Dialog CPP Datei:
Code: Alles auswählen
void MyDlg::on_okDlg_clicked()
{
... // hier überprüfe deine Eingaben
if( Eingabe == OK )
accept(); // Falls Eingabe ok, Dialog mit accept verlassen
}
Falls Eingaben nicht ok sind, wird demnach accept() nicht aufgerufen und es gescheiht nichts -> dein Dialog bleibt weiterhin offen.
Hoffe dieser Ansatz hilft ein wenig, ansonsten wieder melden.
Gruess
bigmil
Verfasst: 12. Oktober 2007 11:25
von Bagstone
Habe das grade probiert, aber das accepted() Signal wird trotzdem an den Dialog gereicht und der schließt trotzdem. Ich kriege zwar die Fehlermeldung die ich haben will, also er geht in die Funktion rein und führt kein accept() aus, aber trotzdem schließt sich derDialog.
Verfasst: 12. Oktober 2007 11:36
von Bagstone
Falls den Thread jemand anderes rauskramt:
done(int r) reimplentieren ist die Lösung.
Quelle:
http://www.qtcentre.org/forum/f-qt-prog ... -8048.html
(ich hoffe es verstößt gegen keine Forenregeln Links zu anderen Foren zu posten.

)