ich bräuchte mal wider eure Hilfe. Diesmal geht es bei mir um QMenus und um QActions.
Mein Problem besteht darin das ich ein globales QMenu erzeuge und eine Funktion besitze die mir dieses QMenu zurück gibt. Das hinzufügen des neuen QMenus funktioniert nur das löschen nicht.
Mit getContextMenu(); (eigene Funktion) gebe ich mir das globale QMenu zurück und gehe alle QActions in einer Schleife durch und schaue ob das neue QMenu schon vorhanden ist, wenn ja soll es nicht mehr hinzugefügt werden und genau da liegt mein Problem. Es funktioniert nicht so richtig wie ich es mir vorgestellt habe.
Nun der Quelltext meiner Abgeleiteten Klasse von LDObject:
Code: Alles auswählen
public class LDObjectAccomplishmentPanel extends LDObject
{
public LDObjectAccomplishmentPanel( QWidget parent, QPoint origin, QPixmap pixmap, String objectId )
{
super( parent, origin, pixmap, objectId );
}
@Override
protected void contextMenuEvent( QContextMenuEvent menuEvent )
{
List< QAction > newMenuActions = new ArrayList< QAction >();
List< QAction > globalMenuActions = getContextMenu().actions();
for( QAction action : globalMenuActions )
{
if( action.text().equalsIgnoreCase( tr( "New" ) ) )
{
getContextMenu().removeAction( action );
}
newMenuActions.add( action );
}
getContextMenu().actions().clear();
getContextMenu().clear();
getContextMenu().addMenu( tr( "New" ) ).addActions( newMenuActions );
getContextMenu().addActions( newMenuActions );
super.contextMenuEvent( menuEvent );
}
}