Bonjour,

j'ai besoin de mettre un menu contextuel pour une classe dérivant de QDockWidget.
Dans cette classe, j'ai les membres suivants :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
QMenu *contextMenu;
QAction *aMotorStep;
QAction *aMillimeters;
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
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);
}
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 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
}
à l'éxécution, j'ai un petit carré de deux pixels de côté qui apparait, c'est tout.
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