2010-04-28 7 views
43

Ich bin komplett neu in Qt.Wie verbinde ich Menü-Klick mit Aktion in Qt Creator?

Ich begann mit einer neuen Qt4 GUI-Anwendung.

den Designer verwenden, ich habe wie so ein Menü erstellt:

File 
- Exit 

Wie kann ich eine Aktion erhalten mit dem Menüpunkt zugeordnet?

Ich habe etwas namens "Signale und Slots-Editor" gefunden, habe aber keine Ahnung, wie man es benutzt.

Antwort

47

Klicken Sie auf das grüne Pluszeichen, nachdem Sie die Signale Slots Editor ausgewählt haben. Sie erhalten 4 Felder zum Ausfüllen. Für den Absender wählen Sie, was das Signal erzeugt. Beispielsweise könnte ActionExit der Name sein, den Sie für den Exit-Menüeintrag erstellt haben. Das Signal wird wahrscheinlich angeklickt(). Der Empfänger ist normalerweise die von Ihnen erstellte Klasse mit allen Ihren Methoden. Der Slot ist die Methode, die Sie in der Klasse erstellt haben, die Sie ausführen möchten. Zum Beispiel:

actionExit clicked() <nameOfClass> exitGame() 

Hoffe das hilft.

+0

Okay, großartig. Noch eine kurze Frage ... Was ist die Methodensignatur für die Funktion, die aufgerufen wird, wenn auf den Menüpunkt geklickt wird? Ist es wie 'void OnClick()', oder gibt es Argumente dafür? –

+3

Eigentlich möchten Sie getriggert() auswählen, da es sich um eine Aktion handelt. Jetzt für die Methode, die aufgerufen wird, braucht es keine Argumente, so dass Sie es void exitGame() nennen können, wenn Sie möchten. – Isawpalmetto

+1

Übrigens habe ich vergessen zu erwähnen, dass ausgelöste() was im Signalfeld gehen soll. Ich wollte nur klar sein. – Isawpalmetto

39

Ich schaffte es auf eine Weise, die viel einfacher scheint. Im Qt Creator Action Editor-Fenster sehe ich einen Eintrag für den Menüpunkt, auf den ich geklickt habe. Klicken Sie mit der rechten Maustaste auf diesen Eintrag und wählen Sie "Gehe zu Slot ...", dann wähle ich ausgelöste() aus dem Popup und klicke OK. Qt Creator bringt mich zu dem Code, den er gerade hinzugefügt hat ... Ich habe eine qDebug-Anweisung darin eingefügt und es funktioniert!

+2

Der Unterschied zwischen dieser und der angenommenen Antwort ist diese Antwort erstellt eine Aktion speziell für den Menüpunkt und die angenommene Antwort hängt an jedem vorgegebenen Slot Beide Aspekte sind nützlich. – radman

+0

Ich habe zuerst missverstanden, ich habe das, was Sie gesagt haben, mit dem Objektbrowser verwechselt, mit dem Action Editor ist das natürlich der Weg! – Nisse

2

Gehen Sie zum Slots Editor und klicken Sie dann auf die Action Editor Registerkarte auf der unteren linken Seite. Es sind alle Menüaktionen aufgelistet.

Rechtsklick -> Gehe zu Slot bietet eine Slot-Funktion.