wake-up-neo.net

Wie verbinde ich einen Menüklick mit einer Aktion in Qt Creator?

Ich bin völlig neu in Qt.

Ich habe mit einer neuen Qt4-GUI-Anwendung begonnen.

Mit dem Designer habe ich ein Menü wie folgt erstellt:

File
 - Exit

Wie erhalte ich eine mit dem Menüelement verknüpfte Aktion?

Ich habe etwas gefunden, das sich "Signal- und Slot-Editor" nennt, aber keine Ahnung, wie ich es verwenden soll.

45
Nathan Osman

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

actionExit clicked() <nameOfClass> exitGame()

Hoffe das hilft.

48
Isawpalmetto

Ich habe es auf eine Weise geschafft, die viel einfacher zu sein scheint. Im Fenster Qt Creator Action Editor wird ein Eintrag für den Menüpunkt angezeigt, auf den ich geklickt habe. Ich t-klicken Sie auf diesen Eintrag und wählen Sie "Gehe zu Slot ...", dann wähle ich ausgelöst () aus dem Popup und klicken Sie auf OK. Qt Creator springt mich zu dem Code, den es gerade hinzugefügt hat.

41
user347524

Rufen Sie den Slots-Editor auf und klicken Sie unten links auf die Registerkarte Aktionseditor. Es sind alle Menüaktionen aufgelistet.

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

4
Darkproduct

Ich habe gesehen, dass es in diesem großartigen Forum 2 oder 3 Fragen dieser Art gibt, aber alle sind sehr verwirrend. Es ist nicht erforderlich, zum Signal-/Slot-Ersteller zu gehen, der gerade Qt Designer erhalten hat, und die folgenden Schritte auszuführen

1.Add Menu und Aktion in der Menüleiste und fügen Sie eine beliebige Funktion in den Slot Ihrer mainwindow.h-Datei wie folgt hinzu: private slots: void help();

2. Fügen Sie zweitens den folgenden Code in Ihre mainwindow.cpp ein.

connect(ui->actionmyactions, SIGNAL(triggered()), this, SLOT(help()));

3. dasselbe kann auch für Menüs mit folgendem Code gemacht werden:

connect(ui->menuHelp, SIGNAL(aboutToShow()), this, SLOT(help()));

4.Sie können die gewünschten Ergebnisse erzielen, ohne wie folgt zu Qt Designer zu wechseln.

  1. deklarieren Sie Ihre Aktion in Ihrem Hauptfenster.h wie folgt

    QAction *myaction;

  2. und füge folgenden Code in deine mainwindow.cpp ein

    myaction = ui->mainToolBar->addAction("help"); connect(myaction, SIGNAL(triggered()), this, SLOT(help()));

0
Shaikh Chili