Question

Je veux ajouter un sous-menu dans mon menu contextuel qui est créé comme ceci:

self.widget_alignment.setContextMenuPolicy(Qt.ActionsContextMenu)

où widget_alignment est QTableWidget .

J'ai créé une nouvelle instance QMenu:

exchange_bases_menu = QMenu(self.widget_alignment)

ajouté certaines actions, et j'ai trouvé une méthode QAction QMenu.addMenu (auto, le menu QMenu)

mais je ne vois aucune référence au menu contextuel par défaut pour self.widget_alignment. De plus, ce code:

self.widget_alignment.addMenu(exchange_bases_menu)

m'a donné. Objet QTableWidget n'a pas d'attribut addMenu

Comment puis-je ajouter mon sous-menu au menu contextuel par défaut?

Était-ce utile?

La solution

Selon la documentation, lorsqu'un QWidget est réglé pour avoir le contexte des actions type de menu, le widget construira un menu contextuel en fonction de la liste des actions définies pour le widget. Pour modifier la liste des actions, vous pouvez appeler addAction, insertAction ou removeAction. Je vous attendre pourriez faire quelque chose comme ça (en C ++):

QAction *act_p = new QAction( "Has Submenu", widget_alignment );
QMenu *submenu_p = new QMenu( act_p );
// Add items to the submenu
act_p->setMenu( submenu_p );
widget_alignment->addAction( act_p );

Sans essayer moi-même, je me attends cette option pour ajouter une option au bas du menu contextuel « A Sous-menu » qui est généré pour le widget, avec le sous-menu vous avez créé comme le sous-menu indiqué.

Autres conseils

Qu'en est-il en utilisant le pop-up de QMenu () dans mouseReleaseEvent?

if (pEvent->button() == Qt::RightButton)
{
    QMenu menu;
    menu.addAction(action1);
    menu.addAction(action2);
    menu.popup(pEvent->globalPos(),action1);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top