web-dev-qa-db-fra.com

Comment connecter un clic de menu avec une action dans Qt Creator?

Je suis complètement nouveau sur Qt.

J'ai commencé avec une nouvelle application graphique Qt4.

En utilisant le concepteur, j'ai créé un menu comme celui-ci:

File
 - Exit

Comment obtenir une action associée à l'élément de menu?

J'ai trouvé quelque chose appelé "l'éditeur de signaux et de slots" mais je ne sais pas comment l'utiliser.

45
Nathan Osman

Cliquez sur le signe plus vert après avoir sélectionné l'éditeur de slots de signaux. Il vous donnera 4 champs à remplir. Pour l'expéditeur, vous sélectionnez ce qui crée le signal. Par exemple, ActionExit peut être le nom que vous avez créé pour l'élément de menu de sortie. Le signal va probablement être cliqué (). Le récepteur est généralement la classe que vous avez créée et qui contient toutes vos méthodes. L'emplacement est la méthode que vous avez créée dans cette classe que vous souhaitez exécuter. Par exemple:

actionExit clicked() <nameOfClass> exitGame()

J'espère que cela t'aides.

48
Isawpalmetto

J'ai réussi à le faire d'une manière qui semble beaucoup plus facile. Dans la fenêtre Qt Creator Action Editor, je vois une entrée pour l'élément de menu sur lequel j'ai cliqué. Je rt-cliquez sur cette entrée et sélectionnez "Aller à l'emplacement ..." puis je sélectionne déclenché () dans la fenêtre contextuelle et cliquez sur OK. Qt Creator me saute au code qu'il vient d'ajouter ... J'ai mis une instruction qDebug là-dedans et ça marche!

41
user347524

Accédez à l'éditeur de machines à sous, puis cliquez sur l'onglet Éditeur d'actions sur le côté inférieur gauche. Toutes les actions du menu sont répertoriées.

Clic droit -> Aller à la fente fournit une fonction de fente.

4
Darkproduct

J'ai vu 2 peut-être 3 ce genre de questions sur ce grand forum mais tout le monde est très déroutant, il n'est pas nécessaire d'aller à signal/slot creator vient de recevoir Qt Designer et suivez les étapes suivantes

1.ajoutez le menu et l'action dans la barre de menus et ajoutez n'importe quelle fonction dans l'emplacement de votre fichier mainwindow.h comme suit private slots: void help();

2. Ajoutez ensuite le code suivant dans votre mainwindow.cpp.

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

3.La même chose peut être faite pour les menus en utilisant le code suivant:

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

4.Vous pouvez obtenir les résultats souhaités sans passer par Qt Designer comme suit.

  1. déclarez votre action dans votre mainwindow.h comme suit

    QAction *myaction;

  2. et ajoutez le code suivant dans votre mainwindow.cpp

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

0
Shaikh Chili