Création d'un menu rempli dynamiquement
Bonjour à tous ! :D
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 :
Code:
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;
} |
Le problème qui se pose est que je trouve pas comment faire pour savoir sur quel sous-menu, on a cliqué.
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 !