Pregunta

Quiero añadir un submenú en mi menú de contexto que se crea de esta manera:

self.widget_alignment.setContextMenuPolicy(Qt.ActionsContextMenu)

donde widget_alignment es QTableWidget .

He creado una nueva instancia QMenu:

exchange_bases_menu = QMenu(self.widget_alignment)

añadieron algunas acciones, y he encontrado un método QAction QMenu.addMenu (sí, el menú QMenu)

pero no veo ninguna referencia al menú de contexto predeterminado para self.widget_alignment. Además, este código:

self.widget_alignment.addMenu(exchange_bases_menu)

me dio:. QTableWidget objeto no tiene atributo Addmenu

¿Cómo puedo añadir mi submenú al menú de contexto por defecto?

¿Fue útil?

Solución

De acuerdo con la documentación, cuando un QWidget se fija para tener el tipo de menú de contexto acciones, el widget construir un menú de contexto basado en la lista de acciones establecidas para el widget. Para modificar la lista de acciones, puede llamar addAction, insertAction o removeAction. Así que yo esperaría que podría hacer algo como esto (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 );

Sin tratar yo mismo, yo esperaría que esto para añadir una opción "Tiene submenú" a la parte inferior del menú contextual que se genera para el widget, con el submenú que ha creado como se muestra en el submenú.

Otros consejos

¿Qué pasa con el uso emergente de QMenu () en MouseReleaseEvent?

if (pEvent->button() == Qt::RightButton)
{
    QMenu menu;
    menu.addAction(action1);
    menu.addAction(action2);
    menu.popup(pEvent->globalPos(),action1);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top