Bonjour à tous !
Ne connaissant pas trop QT et ses possibilités, je viens à vous car j'ai un problème pour lequel je n'ai pas encore trouvé de solution.
J'ai créé une barre de menu, tout ce qui a de plus simple avec une liste de sous-menu contenant le nom de certains pays. La liste de ces pays est lue à partir d'un fichier XML.
Pour récupérer l'évènement du clic sur l'un des sous-menus, j'ai connecté cet évènement à un slot appelé "test()". Voici le code qui effectue cette opération :
Le problème qui se pose est que je trouve pas comment faire pour savoir sur quel sous-menu, on a cliqué.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 FenetrePrincipale::FenetrePrincipale(Collection * pCollection, QWidget *parent) : QMainWindow(parent), ui(new Ui::FenetrePrincipale) { ui->setupUi(this); m_pCollection = pCollection; // Récupération de la liste des pays QVector<Pays> vListePays = m_pCollection->GetListePays(); // Récupération du nombre de pays long nNbPays = vListePays.size(); // Parcours des pays pour les ajouter dans la barre de menu Pays for (int i=0; i<nNbPays; i++) { // Récupération du pays courant Pays pays = vListePays.at(i); // Récupération de son nom QString strNom = pays.GetNom(); // Création d'un sous-menu correspondant au pays QAction * pAction = new QAction(this); pAction->setObjectName(strNom); pAction->setText(strNom); ui->menuPays->addAction(pAction); // Connection du QAction au slot test() connect(pAction, SIGNAL(triggered()), this, SLOT(test())); } } void FenetrePrincipale::test() { int test=0; }
Etant donné que je ne peux pas créer "statiquement" autant de slot qu'il y a de pays (vu qu'on ne les connait pas à l'avance), il faudrait que j'arrive à faire passer un paramètre au slot qui me permettra de me dire sur quel sous-menu on a cliqué.
Si quelqu'un a une idée ou une autre solution, je suis preneur !
Merci d'avance !
Partager