Maximieren [gelöst]

Alles rund um die Programmierung mit Qt
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

Maximieren [gelöst]

Beitrag 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
Zuletzt geändert von Label am 2. Dezember 2008 09:39, insgesamt 2-mal geändert.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Code: Alles auswählen

setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint);
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

Beitrag 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 ...
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Hm eigentlich müsste das gehn. Ist das Widget im Designer gemacht? Falls ja, wird das vllt durch setupUi wieder überschrieben?
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

Beitrag 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. :(
Zuletzt geändert von Label am 27. November 2008 14:16, insgesamt 1-mal geändert.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag 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 :D
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

Beitrag 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 :twisted: ) endlich verschwinden lassen kann? Bitte?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Qt bringt ein 'WindowFlags'-Example mit. Damit sollte man herausfinden können welche Flags was wie beeinflussen :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

Beitrag 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?
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag 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?
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

Beitrag 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?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

Beitrag 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?
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag 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).
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

Beitrag 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?
Antworten