Wie wird Esc Schlüssel zum Minimieren eines Dialogs gemacht? Standardmäßig wird es geschlossen. Sollte ich KeyEvent
verarbeiten oder gibt es einen besseren Weg?Qt - Esc sollte den Dialog nicht schließen
Antwort
Ich glaube, Sie diese verwenden:
MyDialog::keyPressEvent(QKeyEvent *e) {
if(e->key() != Qt::Key_Escape)
QDialog::keyPressEvent(e);
else {/* minimize */}
}
auch einen Blick auf Events and Event Filters docs haben.
Ich denke, dass, um dies zu tun, Sie im Grunde vermeiden müssen, von QDialog
erben. The documentation for QDialog
sagt:
Escape-Taste
Wenn der Benutzer die Esc-Taste in einem Dialog drückt, QDialog :: ablehnen() wird aufgerufen werden. Dadurch wird das Fenster auf geschlossen: Das Schließen-Ereignis kann nicht ignoriert werden.
nice docs Tyler! Warum nicht überschreiben, anstatt zu erben, obwohl? – n611x007
Escape-Anrufe ablehnen(). Ich überschreiben diese Funktion (in meinem Fall nicht um den Dialog zu minimieren, sondern aufzufordern, zu speichern)
void MyDialog::reject() {if(cleanupIsOK()) done(0);}
AL_
Umbenennung der Spuck korrekt ist. Aber seien Sie vorsichtig, denn wenn Sie den Dialog auf andere Weise schließen möchten, können Sie nicht schließen.
MyDialog::reject(){
if(some_closing_condition)
{
QDialog::reject() //calls the default close.
}
else
{
//skip reject operation
}
}
- 1. Qt, nicht-modale Dialog schließt sich nicht
- 2. Deaktivieren Esc schließen für Colorbox
- 3. Jquery Dialog modal nicht schließen
- 4. jquery Dialog nicht öffnen/schließen
- 5. Stop fancybox schließen, wenn Benutzer Esc drückt
- 6. Schließen Bootstrap 4 Dropdown auf ESC
- 7. JavaFx Fenster beim Drücken von Esc schließen?
- 8. Qt-Dialog ohne Fenstersymbol (Systemmenü)
- 9. JAVA GUI Schließen Anwendung Dialog
- 10. Excel überschreiben Dialog schließen
- 11. Ich kann Dialog nicht schließen in JointJS
- 12. Qt non-blocking Overlay-Dialog
- 13. Wann sollte ich den Entity Manager schließen?
- 14. Sollte ich den Servlet-Ausgabestream schließen?
- 15. Facebook Connect Dialog nicht automatisch schließen
- 16. Dialog nicht auf Windows Mobile schließen
- 17. nicht in der Lage, den QDialog in PyQT mit Esc-Taste sauber zu schließen
- 18. Android 4.0.3 Progress Dialog Schließen
- 19. ReactJS Dialog mit Schließen-Schaltfläche
- 20. Jhipster: Dialog bei Eingabe schließen
- 21. Ordner-Browser-Dialog in Qt
- 22. Wie verhindere ich, dass ESC in bearbeitbaren Optionen in den jQuery-ui-Dialog propagiert wird?
- 23. Qt - Hinzufügen eines Hyperlinks zu einem Dialog
- 24. Schließen Sie den Dialog jQuery UI von Iframe
- 25. Wie entferne ich den Link "Schließen" aus meinem modalen Dialog?
- 26. Schließen Sie den Dialog nach 5 Sekunden mit jquery
- 27. JavaFX schließen Dialog ohne Ergebnis Einstellung
- 28. jQuery UI-Dialog - wie kann man es nicht schließen?
- 29. Wie ESC in Ereignis in JQuery Dialog abfangen?
- 30. Eingang Schließen selbst und sollte nicht Inhalt
Sie möchten vielleicht direkt gegenüber Dinge in If-else-Anweisung. – Narek
Hm, ich denke, dass es korrekt ist: IF (nicht Excape) {/ * ignorieren * /} ELSE {/ * hide * /} – mosg
Bitte ändern Sie Ihren Code in den folgenden, denn ich könnte Ihre Antwort akzeptieren. Vielen Dank! void MyDialog :: keyPressEvent (QKeyEvent * e) {if (e-> Schlüssel()! = Qt :: Key_Escape) QDialog :: keyPressEvent (e); else/* minimieren * /} – Narek