Bonjour,
j'ai besoin de mettre un menu contextuel pour une classe dérivant de QDockWidget.
Dans cette classe, j'ai les membres suivants :
J'ai crée une fonction createMenus() qui comme son nom l'indique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 QMenu *contextMenu; QAction *aMotorStep; QAction *aMillimeters;
Pour faire apparaître le menu contextuel, j'ai alors surchargé la méthode contextMenuEvent(QContextMenuEvent *event) (partie en violet) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void myDockValues::createMenus() { contextMenu = new QMenu(this); // On cree le menu // Creation des actions (entrées de menu) aMotorStep = new QAction(tr("Pas moteurs"), this); aMotorStep->setCheckable(true); aMillimeters = new QAction(tr("Millimètres"), this); aMillimeters->setCheckable(true); }
à l'éxécution, j'ai un petit carré de deux pixels de côté qui apparait, c'est tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void monDock::contextMenuEvent(QContextMenuEvent *event) { /* QMenu menu(this); // Méthode qui marche menu.addAction(aMotorStep); menu.addAction(aMillimeters); menu.exec(event->globalPos()); // Méthode qui marche */ contextMenu->exec(event->globalPos()); // Méthode qui marche pas }
Par contre, si je construit mon menu à l'intérieur de contextMenuEvent (partie en rouge) là ça fonctionne.
Qu'est-ce que je n'ai pas saisi ? c'est lié aux "events" ?
tags : Menu contextuel - contextMenuEvent - popup miniscule
Partager