als Ein/Umsteiger (von SGI Viewkit/Motif) in die Programmierung mit Qt unter Linux habe ich folgendes Problem:
UI-Klasse (vom Qt Designer automatisch generiert):
Code: Alles auswählen
class myWindowUI : public QMainWindow
..........
View = new QPopupMenu( this );
popupMenu_81 = new QPopupMenu( this );
viewDatasetAction = new QAction( this, "viewDatasetAction" );
View->insertItem( viewDatasetAction->iconSet(), tr( "&Dataset" ), popupMenu_81 );
viewDatasetFirstAction->addTo( popupMenu_81 );
..........Abgeleitete Klasse:
Code: Alles auswählen
class myWindow : public myWindowUI
.........
popupMenu_81->insertTearOffHandle();
.........ClassUI (classui.[Ch]) -> Class (class.[Ch])
Generierte Basisklasse (UI):
Wenn ich im QMainWindow in ein Menü einen neuen Eintrag einfüge, erzeugt der Designer eine QAction, von der lediglich das QIconSet zusammen mit einem automatisch nummerierten QPopupMenu in das Elternmenü gepflanzt wird.
Abgeleitete Klasse:
Hier kenne ich namentlich nur das (public) QAction-Objekt im Voraus.
Frage:
Muss ich nun jedes Mal, wenn sich der UI-Code des Qt Designer implizit verändert hat - und damit auch evtl. die Benennung des QPopupMenus -, Zugriffe auf das QPopupMenu explizit anpassen?
Oder gibt es alternativ eine elegante Möglichkeit, dynamisch z.B. via Child/Parent-Aufrufe auf die Funktionalität des QPopupMenu zuzugreifen? Beispielsweise, um eine tear-off handle einzufügen etc., was mit einer QAction ja direkt nicht möglich ist.
Kann mir da jemand einen Tipp geben? Vielen Dank im Voraus.