Kirsche
27-07-2005, 15:14
Hallo Leute,
ich möchte meinem Poup-Menü "windowMenu" flexibel Einträge hinzufügen und daraus wieder entfernen, je nachdem welche Fenster gerade geöffnet sind.
Es sollen also neu geöffnete Fenster eingetragen und gerade geschlossene wieder gelöscht werden. Wenn man auf einen Eintrag klickt, soll das entsprechende Fester aktivert werden.
Dabei gibt es ein paar Probleme:
1.
In dem Menü gibt es Einträge, die immer da sein sollen ( "z.B close all windows"). Da es sich um QActions handelt, die nicht mit "insert" eingefügt werden können, haben diese keine manuell gesetzten Ids. Kann ich sicher sein, dass die automatisch generierten immer negativ sind?
2. Meine Einträge mache ich anhand der Namen, die in der Fensterliste des Workspaces stehen: QWidgetList windows = mdi->windowList( QWorkspace::CreationOrder ); und dann windows.at( i )->caption() innerhalb einer Schleife. Macht man das so?
3. Sobald ich ein Fenster schließe, muss ich den entsprechenden Eintrag löschen. Das Ereignis fange ich über einen Eventfilter ab. Allerdings weiß ich dann nicht, welches Fester geschlossen wurde und welchen Eintrag ich löschen muss.
4. Wenn ich einen Eintrag lösche, stimmen hinterher die Ids nicht mehr mit den Einträgen in der Festerliste überein, weil die alten Ids beibehalten werden, die Liste sich aber geändert hat. Muss ich das Menü "windowMenu" jedesmal komplett neu aufbauen? Wie lösche ich dann alle variablen Einträge und behalte die festen bei?
Wie kann man das ganze sinnvoll gestalten? In anderen Programmen klappt es doch auch. Ich habe mich irgendwie verzettelt. :confused:
Vielen Dank,
ich möchte meinem Poup-Menü "windowMenu" flexibel Einträge hinzufügen und daraus wieder entfernen, je nachdem welche Fenster gerade geöffnet sind.
Es sollen also neu geöffnete Fenster eingetragen und gerade geschlossene wieder gelöscht werden. Wenn man auf einen Eintrag klickt, soll das entsprechende Fester aktivert werden.
Dabei gibt es ein paar Probleme:
1.
In dem Menü gibt es Einträge, die immer da sein sollen ( "z.B close all windows"). Da es sich um QActions handelt, die nicht mit "insert" eingefügt werden können, haben diese keine manuell gesetzten Ids. Kann ich sicher sein, dass die automatisch generierten immer negativ sind?
2. Meine Einträge mache ich anhand der Namen, die in der Fensterliste des Workspaces stehen: QWidgetList windows = mdi->windowList( QWorkspace::CreationOrder ); und dann windows.at( i )->caption() innerhalb einer Schleife. Macht man das so?
3. Sobald ich ein Fenster schließe, muss ich den entsprechenden Eintrag löschen. Das Ereignis fange ich über einen Eventfilter ab. Allerdings weiß ich dann nicht, welches Fester geschlossen wurde und welchen Eintrag ich löschen muss.
4. Wenn ich einen Eintrag lösche, stimmen hinterher die Ids nicht mehr mit den Einträgen in der Festerliste überein, weil die alten Ids beibehalten werden, die Liste sich aber geändert hat. Muss ich das Menü "windowMenu" jedesmal komplett neu aufbauen? Wie lösche ich dann alle variablen Einträge und behalte die festen bei?
Wie kann man das ganze sinnvoll gestalten? In anderen Programmen klappt es doch auch. Ich habe mich irgendwie verzettelt. :confused:
Vielen Dank,