2010-12-14 31 views
1

Dans Qt, j'ai une barre de menu qui ressemble à ceci:Comment puis-je appeler une fonction lorsqu'un utilisateur clique sur un élément de menu?

|File| 
+-------------------+ 
|Do Something  | 
|Do Something Else | 
+-------------------+ 

Je fonction doSomething que je veux appeler lorsque l'utilisateur clique sur le Do Something dans le menu fichier, et une fonction doSomethingElse que Je veux également être appelé lorsque l'utilisateur clique sur cet élément de menu. Comment pourrais-je accomplir cela?

Répondre

8

En règle générale, vos éléments de menu sont QAction s. Connectez le signal QAction triggered() avec le doSomething() que vous voulez appelé.

This est une description assez complète de comment cela fonctionne. Mais this section du address book tutorial est bon pour une explication rapide.

+0

Existe-t-il un moyen de le faire si la fonction ne fait partie d'aucune classe? – wrongusername

+0

Je ne le crois pas. Les slots doivent être des fonctions membres d'une classe avec la macro Q_OBJECT, si je me souviens bien. – jkerian

+1

De mon premier lien "Toutes les classes qui contiennent des signaux ou des slots doivent mentionner Q_OBJECT en haut de leur déclaration, elles doivent aussi dériver (directement ou indirectement) de QObject." – jkerian

2

Faites de votre fonction un emplacement et connectez l'action de menu à la fente.