(siehe Änderungen)Wie kann ich verhindern, dass Gnome beim Ausführen von Alt-Tab zwei Fenster anzeigt? (C++ qt app)
Ich entwickle eine QT/C++ Anwendung unter Gnom.
Die Anwendung ein Hauptfenster und QListBox untergeordneten Fenster.
Beide dieser Fenster zeigen sich als separate Hauptfenster, wenn ich Alt-Tab von der Anwendung entfernt.
Wie kann ich es so einrichten, dass nur ein Fenster angezeigt wird, wenn ich (oder später der Benutzer) Alt-Tab verwende?
Ich rate dieses Verhalten kommt, weil ein Hauptfenster das Unterfenster nicht abschneidet - das Unterfenster erweitert die Grenze des Hauptfensters. Gnome hat auch für eine Reihe anderer Anwendungen ein schlechtes Alt-Tab-Verhalten und zeigt modale Dialogfelder getrennt von den Hauptfenstern an. Aber im Falle meiner App ist das wirklich nervig.
Ich denke, ich könnte ein riesiges transparentes Fenster, das beide bestehenden Fenster enthält. Aber es wäre schöner, eine "saubere" Lösung zu finden.
(. Die logischste Vermutung ist, in der Tat, dass es etwas mit Fenster Fahnen zu tun hat, ich habe jede sinnvolle Kombination von Flaggen habe ich versucht, einfiel Die Fenstertypen here beschrieben werden.)
Edit: Die App hat ein QWidget als Hauptfenster (Nicht QMainWindow), QListView ist im QWidget-Objekt enthalten und wird durch Übergeben eines Punktes an das Hauptfenster erstellt. ist mit Qt :: Tool | gestylt Qt :: FramelessWindowHint.
Edit2: Die Qt :: X11BypassWindowManagerHint Stil tut Arbeit das Fenster aus der Alt-Tab-Liste zu entfernen. Das Problem ist, dass es das Fenster auch "unmanaged" macht, so dass es die anderen Fenster abdeckt. Ich könnte mich verstecken, wenn ich den Fokus verliere - jetzt Preis für eine bessere Lösung.
Ich vermute, es hat etwas mit den Fensterflaggen zu tun ... zum Beispiel, wenn Sie es zu einem Werkzeugfenster machten, würde es beide dann greifen? Wenn ich zum Beispiel OpenOffice nutze, durchsucht Gnome nicht seine schwebenden Werkzeugfenster, sondern nur die wichtigsten. –
Ich nehme an, die QListBox hat den übergeordneten Fensterzeiger auf ein QMainWindow gesetzt? Gibt es eine Chance auf ein Gerüst von mindestens erforderlichem Code, um dieses Problem zu erzeugen? – sleepynate