Domanda

Voglio aggiungere un sottomenu nel mio menu di contesto che si crea in questo modo:

self.widget_alignment.setContextMenuPolicy(Qt.ActionsContextMenu)

dove widget_alignment è QTableWidget .

Ho creato una nuova istanza QMenu:

exchange_bases_menu = QMenu(self.widget_alignment)

aggiunto alcune azioni, e ho trovato un metodo QAction QMenu.addMenu (auto, menù QMenu)

, ma non vedo alcun riferimento al menu contestuale di default per self.widget_alignment. Inoltre, questo codice:

self.widget_alignment.addMenu(exchange_bases_menu)

mi ha dato:. Oggetto QTableWidget non ha un attributo addMenu

Come posso aggiungere il mio sottomenu al menu di contesto di default?

È stato utile?

Soluzione

In base alla documentazione, quando un QWidget è impostato per avere il tipo di menu azioni contesto, il widget di costruirà un menu contestuale in base all'elenco delle azioni previste per il widget. Per modificare l'elenco delle azioni, è possibile chiamare addAction, insertAction o removeAction. Quindi mi aspetto che si possa fare qualcosa di simile (in 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 );

Senza cercare io stesso, mi sarei aspettato questo per aggiungere un opzione "Ha sottomenu" alla parte inferiore del menu di scelta rapida che viene generato per il widget, con il sottomenu è stato creato come il sottomenu indicato.

Altri suggerimenti

Cosa succede ad usare comparsa di QMenu () in MouseReleaseEvent?

if (pEvent->button() == Qt::RightButton)
{
    QMenu menu;
    menu.addAction(action1);
    menu.addAction(action2);
    menu.popup(pEvent->globalPos(),action1);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top