Seite 1 von 2
Maximieren [gelöst]
Verfasst: 27. November 2008 12:53
von Label
Mahlzeit!
Ich weis das hier schon oft über das Thema Maximiern, Minimieren usw. philosophiert wurde, aber ich habe bis jetzt nichts gefunden was funktioniert.
Im Prinzip möchte ich einfach nur verhindern das der User meines Programms, das dargestellte Fenster maximieren kann.
Am liebsten wäre es mir wenn ich den Maximize Button oben aus der Titelleiste bekomme. Ich hab auch schon einige verschiedene Sachen hier aus dem Forum ausprobiert aber nichts hat funktioniert (Es kamen keine Fehlermeldungen sondern: der Button war immer sichtbar).
Kann mir jemand sagen wie das Event heißt, das beim Maximieren ausgelöst wird, oder wie ich diesen maximieren Button aus der Titelleiste raus bekomme?
Vielen Dank schonmal für die *hoffentlich* vielen Antworten
Ubuntu 7.04
Qt 4.3.1
Verfasst: 27. November 2008 13:09
von pfid
Code: Alles auswählen
setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint);
Verfasst: 27. November 2008 13:14
von Label
Ich habe diese Zeile jetzt so wie sie da steht in den Konstruktor meines Widgets geschrieben. Der Button ist aber immernoch da.
Muss ich da noch irgendwas davor schreiben?
Darf ich das nicht in den Konstruktor schreiben?
Ich verzweifel bald ...
Verfasst: 27. November 2008 13:26
von pfid
Hm eigentlich müsste das gehn. Ist das Widget im Designer gemacht? Falls ja, wird das vllt durch setupUi wieder überschrieben?
Verfasst: 27. November 2008 13:33
von Label
Ja das Widget ist teilweise im Designer erstellt worden und du hast recht, ich hatte setWindowFlags() tatsächlich vor setupUi() positioniert ABER .... was soll ich sagen ... ich habe es jetzt hinter setupUi() gesetzt und der Button ist immernoch da.

Verfasst: 27. November 2008 13:34
von pfid
Label hat geschrieben:Ja das Widget ist teilweise im Designer erstellt worden und du hast recht, ich hatte setWindowFlags() tatsächlich vor setupUi() positioniert ABER .... was soll ich sagen ... ich habe jetzt hinter setupUi() gesetzt und der Button ist immernoch da.

Macht nichts, ich steh auch gerade aufm Schlauch, bei mir gehts auch nicht

Verfasst: 27. November 2008 13:39
von Label
Ist das jetzt gut oder schlecht?
Nein im ernst. Ich muss unbedingt diesen Button da oben raus bekommen. Weißt du oder sonst irgend jemand noch eine andere Möglichkeit, wie ich diesen Bastard-Knopf (entschuldigt meine Ausdrucksweise

) endlich verschwinden lassen kann? Bitte?
Verfasst: 27. November 2008 13:44
von Christian81
Qt bringt ein 'WindowFlags'-Example mit. Damit sollte man herausfinden können welche Flags was wie beeinflussen

Verfasst: 27. November 2008 13:51
von Label
Ich habe dieses Example schon durch exerziert bevor ich diesen Thread eröffnet habe. Ich habe (so gut wie) alle Möglichkeiten durch probiert aber leider hab ich es nie geschafft, den Knopf verschwinden zu lassen.
Vielleicht könnte ja mal jemand versuchen dieses Example bei sich zu starten und den Knopf auszublenden. Also ich habe es wie gesagt mit keiner Kreuzchen-und-Häkchen-Kombination hinbekommen.
sonst noch Ideen?
Verfasst: 27. November 2008 13:53
von pfid
http://doc.trolltech.com/4.4/widgets-wi ... w-cpp.html
Code: Alles auswählen
if (windowMaximizeButtonCheckBox->isChecked())
flags |= Qt::WindowMaximizeButtonHint;
So sollte es laut Beispiel gehn =)
Erbst du von QWidget oder Dialog/MainWindow?
Verfasst: 27. November 2008 14:07
von Label
Ich erbe von QWidget.
So wie ich das gelesen habe, soll ja Qt::CustomizeWindowHint alle Knöpfe aus der Titelleiste entfernen und dann kann man nach belieben mit Qt::WindowMinimizeButtonHint, Qt::WindowMaximizeButtonHint usw. die jeweiligen Buttons wieder hinzufügen.
Aber schon das Entfernen der Knöpfe mit Qt::CustomizeWindowHint funktioniert bei mir nicht, geschweige denn das Hinzufügen von Knöpfen.
Funktioniert es bei jemandem oder hat noch irgendjemand eine Idee?
Verfasst: 28. November 2008 07:12
von macman
Label hat geschrieben:So wie ich das gelesen habe, soll ja Qt::CustomizeWindowHint alle Knöpfe aus der Titelleiste entfernen und dann kann man nach belieben mit Qt::WindowMinimizeButtonHint, Qt::WindowMaximizeButtonHint usw. die jeweiligen Buttons wieder hinzufügen.
Ich stelle mal die These auf, das es zumindest unter Win, die Min-, Max-Buttons nur im Paket gibt. Ich habe da auch schon einige Versuche angestellt und mir ist es nicht gelungen, habe es allerdings auch noch nirgends gesehen. Bei Linux mag das anders aussehen.
Verfasst: 28. November 2008 08:30
von Label
Gestern abend habe ich es noch unter Windows testen lassen, und siehe da: Mit einem einfach setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint); war der Button weg (naja nicht wirklich weg, aber er war grau hinterlegt).
Bei mir klappt es leider immernoch nicht. Kann es an Linux liegen bzw. am window handler liegen?
Verfasst: 28. November 2008 08:49
von pfid
Habs bei mir ja unter Linux getestet, da war der Button auch nicht wegzubekommen, mit egal welcher Kombination: Einzig das Frameless Flag hat funktioniert, bzw. das Customized Flag ohne weitere Flags (hatte den gleichen Effekt wie frameless).
Verfasst: 28. November 2008 09:06
von Label
OK ... dann geh ich jetzt einfach mal davon aus, dass das unter Linux nicht machbar ist.
Das ist schlecht ....
Neuer Ansatz:
Ich möchte versuchen das resizeEvent() von meinem Hauptwidget zu überschreiben.
Jetzt ist aber die Frage: Wie unterscheide ich ein Maximieren von einem normalen Resize?