Wie kann ein QPushButton für die Eingabetaste gedrückt werden?
Ich möchte, dass meine app-laptop-freundlich. Ich kann tab, um überall, aber wenn ich tab, um eine QPushButton ich kann nicht drücken es mit Enternur mit Raum.
Was ist das problem? Wie machen es pressbar für Enter?
InformationsquelleAutor der Frage totymedli | 2012-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
tl;dr
QPushButton
.autoDefault
oderdefault
.Den meisten Fällen der wichtigste Unterschied zwischen
autoDefault
unddefault
ist, wie der button dargestellt werden. Aber es gibt Fälle, wo es kann dazu führen, unerwartete Dinge, die so für weitere Informationen Lesen Sie weiter unten.Vollständige überprüfung
Übersicht
Jeder
QPushButton
hat 3 Eigenschaften, die nicht vererbt werden. Aus diesen zwei (default
undautoDefault
) eine wichtige Rolle, wenn wir statt Tasten aufQDialog
s, da diese Einstellungen (und der Fokus auf einem der buttons) entscheidet, welche Taste gedrückt werden, wenn wir drücken Sie Enter.Alle diese Eigenschaften werden standardmäßig auf false gesetzt. Nur die Erwartung ist
autoDefault
wird true, wenn der button hat einQDialog
Eltern.Jedes mal, wenn Sie drücken Sie die Taste Raum die Schaltfläche mit dem Fokus auf Sie gedrückt werden. Im folgenden wird beschreiben, was passiert, wenn Sie die Taste Enter.
Default-Eigenschaft
Wenn dieser Wert true ist, wird die Schaltfläche ein Standard-Schaltfläche.
Wenn Sie Enter gedrückt wird, auf den dialog, als dieser Taste wird gedrückt werden, außer wenn der Fokus auf ein autoDefault-Taste.
Sollte es nur eine Standard-Schaltfläche. Wenn Sie weitere hinzufügen, dann die Letzte, die Hinzugefügt werden, werden die Standard-Schaltfläche.
AutoDefault Eigenschaft
Wenn dieser Wert true ist, wird die Schaltfläche ein autoDefault Taste.
Wenn Sie Enter gedrückt wird, auf den dialog über diese Schaltfläche wird betätigt, wenn der focus drauf ist.
Wenn der Fokus nicht auf eine autoDefault-Taste und es gibt keine Standard-Schaltfläche über die nächsten autoDefault Knopf gedrückt für Enter.
Flachbild-Eigenschaft
Wenn das ist true, dann ist die Grenze der Schaltfläche nicht ausgelöst.
Beispiel Tabellen
Die folgenden Tabellen zeigen, welche Taste gedrückt werden, mit den verschiedenen Tasten auf unterschiedlichen Fokus. Die Tasten sind von Links nach rechts.
Test-code
Der folgende code ist eine Methode zum hinzufügen von Schaltflächen zu einem dialog. Es kann verwendet werden, für die Prüfung durch die änderung der
boolean
Werte beisetDefault()
- und/odersetAutoDefault()
.Sie brauchen nur, um ein Fenster zu erstellen, fügen Sie eine
QPushButton
genanntpushButton
und einQLabel
genanntlabel
(das ist der default naming). Vergessen Sie nicht#include <QMessageBox>
. Dann kopieren Sie diesen code, um die Schaltflächeclicked()
signal:Display
Wenn Sie den code kompilieren können Sie dieses Fenster erhalten. Sie nicht sogar müssen, klicken Sie auf die Tasten, weil die Art, wie Sie gerendert werden, die das OS zeigt, welche betätigt werden, wenn Sie drücken Sie Enter oder Raum.
Offizielle Dokumentation
Meisten dieser Antwort wurde laut der offiziellen Dokumentation.
Die QPushButton Dokumentation gemacht von Qt-Staaten diese:
Es lohnt sich auch zu prüfen, QDialog und QMessageBox.
InformationsquelleAutor der Antwort totymedli
Laut der Qt-Dokumentation Eingeben, sollte funktionieren
http://qt-project.org/doc/qt-4.8/qpushbutton.html
InformationsquelleAutor der Antwort Amxx
totymedli s Antwort ist Super. Ich habe ein kleines Programm zum testen verschiedene Kombinationen von isDefault, autoDefault, setDefault und setAutoDefault Funktionen.
InformationsquelleAutor der Antwort nenad
Die tab-Reihenfolge festlegen, die für Ihre widgets. Dies ermöglicht die Nutzung der return-Taste für einen Klick. Seine dort standardmäßig innen Qt.
InformationsquelleAutor der Antwort G Sree Teja Simha