Frage

Ich möchte in meinem Kontextmenü ein Untermenü hinzufügen, das so erstellt wird:

self.widget_alignment.setContextMenuPolicy(Qt.ActionsContextMenu)

wo widget_alignment ist QtableWidget.

Ich habe eine neue QMenu -Instanz erstellt:

exchange_bases_menu = QMenu(self.widget_alignment)

einige Aktionen hinzugefügt, und ich fand eine Methode Qaction qmenu.addmenu (Self, QMenu -Menü)

Ich sehe jedoch keinen Bezug auf das Standard -Kontextmenü für self.widget_alignment. Zusätzlich dieser Code:

self.widget_alignment.addMenu(exchange_bases_menu)

gab mir: QTableWidget -Objekt hat kein Attribut -AddMenu.

Wie kann ich mein Untermenü zum Standard -Kontextmenü hinzufügen?

War es hilfreich?

Lösung

Nach der Dokumentation, wenn a QWidget Es wird so eingestellt, dass der Aktions -Kontext -Menü -Typ ein Kontextmenü basierend auf der Liste der für das Widget festgelegten Aktionen erstellt. Um die Liste der Aktionen zu ändern, können Sie anrufen addAction, insertAction, oder removeAction. Ich würde also erwarten, dass Sie so etwas tun könnten (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 );

Ohne es selbst zu versuchen, würde ich erwarten, dass dies eine Option "Has Submenu" zum unteren Kontextmenü hinzufügt, das für das Widget generiert wird, wobei das Untermenü, das Sie als Untermenü erstellt haben, erstellt wurden.

Andere Tipps

Was ist mit der Verwendung von QMenus Popup () in MousereleaseEvent?

if (pEvent->button() == Qt::RightButton)
{
    QMenu menu;
    menu.addAction(action1);
    menu.addAction(action2);
    menu.popup(pEvent->globalPos(),action1);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top