Hallo,
bin noch relativ neu in Qt und hab ein Problem wenn ich zwischen mehreren Fenstern wechsle, dass das Fenster, das ich anklicke zwar aktiv wird, aber nicht in den Vordergrund kommt. Zur Programmierung: Ich hab ne Hauptklasse die von MainWindow abgeleitet ist und per buttons können zwei Child-Widgets (ein QDialog und nochmal ein QMainWindow) aufgerufen werden die jeweils als eigene Fenster erscheinen. Das funktioniert alles soweit, wenn ich das Hauptfenster schliesse, werden die Children auch geschlossen. Nur eben funktioniert das wechseln zwischen den Fenstern nicht wie gewünscht. Die funktion QWidget::raise() ist mir bekannt, nur weiss ich nicht mit welchem Signal ich das verbinden könnte. Vielen dank im Voraus. Gruß
Martin
Wechseln zwischen mehreren Fenstern
-
martin2_86
- Beiträge: 17
- Registriert: 20. März 2010 00:29
-
Exasperation
- Beiträge: 186
- Registriert: 11. März 2009 18:00
- Wohnort: VS
Schau dir mal QWidget::focusInEvent an.
Es ist aber trotzdem seltsam, dass das Fenster nicht automatisch nach vorne kommt... Hast du bei dem Fenster, das immer oben bleibt vielleicht das flag Qt::WindowStaysOnTopHint oder Qt::SplashScreen gesetzt?
Es ist aber trotzdem seltsam, dass das Fenster nicht automatisch nach vorne kommt... Hast du bei dem Fenster, das immer oben bleibt vielleicht das flag Qt::WindowStaysOnTopHint oder Qt::SplashScreen gesetzt?
-
martin2_86
- Beiträge: 17
- Registriert: 20. März 2010 00:29
Hi, erstmal vielen dank dass du dir zeit nimmst für mein Problem. Also ich übergebe dem z.B. dem Konstruktor der Klasse QDialog zuerst den Zeiger des Parent Widgets, dann eine "0", die das WindowFlag angibt. Sollte das Child-Fenster dann automatisch in den Hintergrund rücken, wenn ich beide Fenster offen habe und einen Mausklick auf das Hauptfenster mache? Die anderen beiden flags kannte ich bisher noch nicht und ich wüsste auch nicht wo ich die gesetzt haben könnte. Gruß
-
Exasperation
- Beiträge: 186
- Registriert: 11. März 2009 18:00
- Wohnort: VS
Also wenn du generell einen Dialog mit show() aufrufst und das eigentliche mainwindow ist sein parent, dein bleibt der Dialog immer oben, aber du kannst auch auf das andere Fenstern zugreifen... Hab das grade bei mir getestet... Doof ist das natürlich... Wenn du deinem Dialog als Parent 0 übergibst, dann ist das ein eigenständiges Fenster und man kann zwischen den Fenster wechseln. Allerdings ist es dann kein Child mehr vom main window und in meinem testbeispiel bekommt es dann so Sachen wie Window Icon, stylesheets usw nicht mehr mit.. Du kannst mal versuchen ob es für deine Zwecke ausreicht, wenn du als parent 0 übergibst...
Die Flags von denen ich gesprochen habe können manuell per setWindowFlags gesetzt werden. Diese werden benutzt um ein Fenster genauer für seine Funktion einzusetzen, beispielsweise Splashscreens die keinen Taskleisten-Button bekommen oder Toolboxes, die IMMER on top bleiben...
Ich schau mir das noch ein wenig an, hab da selbst noch nicht so viel Erfahrung mit... Vielleicht weiß ja jemand anderes, wie man leicht zwischen den Fenstern wechseln kann, ohne dass man als parent = 0 übergibt.
Die Flags von denen ich gesprochen habe können manuell per setWindowFlags gesetzt werden. Diese werden benutzt um ein Fenster genauer für seine Funktion einzusetzen, beispielsweise Splashscreens die keinen Taskleisten-Button bekommen oder Toolboxes, die IMMER on top bleiben...
Ich schau mir das noch ein wenig an, hab da selbst noch nicht so viel Erfahrung mit... Vielleicht weiß ja jemand anderes, wie man leicht zwischen den Fenstern wechseln kann, ohne dass man als parent = 0 übergibt.
-
martin2_86
- Beiträge: 17
- Registriert: 20. März 2010 00:29
Hi,
genau die Erfahrungen hab ich auch gemacht. Eigentlich will ichs nicht als neues Fenster öffnen (partent=0) da es dann auch nicht gelöscht wird wenn man das mainwindow schließt, außerdem gibts nen extra task in der taskleiste, was mir nicht gefällt. Das mit Icons und stylesheets hört sich auch nicht gut an, war mir aber noch nicht bewusst. Danke dir für deine Mühe, ich hoff mal dass noch jemand anderes was weiss.
Gruß und danke
genau die Erfahrungen hab ich auch gemacht. Eigentlich will ichs nicht als neues Fenster öffnen (partent=0) da es dann auch nicht gelöscht wird wenn man das mainwindow schließt, außerdem gibts nen extra task in der taskleiste, was mir nicht gefällt. Das mit Icons und stylesheets hört sich auch nicht gut an, war mir aber noch nicht bewusst. Danke dir für deine Mühe, ich hoff mal dass noch jemand anderes was weiss.
Gruß und danke