Ich habe ein QGLWidget, das ich auf eine bestimmte Auflösung skalieren möchte (größer als das enthaltene Fenster). Meine Absicht ist, dass das Fenster erweitert wird, bis das Widget in das Innere passt, aber keine Möglichkeit findet, es zu tun.Größe des Fensters an den Inhalt anpassen
Ich habe mehrere Befehle versucht, nachdem ich die Größe des QGLWidget geändert habe, damit es ohne Erfolg funktioniert. Ich werde die Ergebnisse hier auflisten:
- nichts anderes tun: Das Widget überlappt das ganze Fenster. Irgendwann wird es die Größe verändert wird wieder in die kleineren Fenster passen
mainWindow.adjustSize()
: Das Widget auf der Größe verändert wird (0, 0)mainWindow.resize(mainWindow.sizeHint())
: obenmainWindow.resize(mainWindow.minimumSizeHint())
: siehe oben
Ich habe auch gelesen in this thread, dass vor der mainWindow resize I die Ereignisschleife ausgeführt werden muss, um die neuen Größen neu zu berechnen, also habe ich QCoreApplication::processEvents
eingefügt, um dies zu tun, ohne sichtbaren Effekt.
Wie ändere ich die Größe des Fensters über das Widget?
bearbeiten
Die GLWidget ist nicht das einzige Widget des Fensters. Es ist in Splitter zusammen mit einer Gruppenbox eingebettet.
Während dies wirklich ändert die Größe des Fensters auf die benötigte Größe verhindert durch den Benutzer von der weiteren Ändern der Größe:
Das Fenster und Bild-Widget kann mit diesem Code auf das Bild des Originalgröße verkleinert werden. Aus der Dokumentation: 'Setzt sowohl die minimale als auch die maximale Größe des Widgets auf s und verhindert so, dass es immer größer oder kleiner wird. Ich habe gerade versucht, die alten Minimal- und Maximalgrößen zu speichern und wiederherzustellen . – Nobody
Statt 'setFixedSize()' versuchen Sie 'setMinimumSize()' und verwenden Sie 'setSizePolicy()'. Sie haben wirklich eine Menge Kontrolle darüber, wie sich die Dinge mit 'setSizePolicy()' ausdehnen und reagieren. 'setFixedSize()' macht eine Menge Dinge gleichzeitig, also ist es in diesem Fall wahrscheinlich nicht das, was Sie wollen. – phyatt
'minimumSize' scheint mir auch das Falsche zu sein. Der Benutzer sollte die Größe beliebig ändern können. Ich brauche nur das Fenster, um auf die Größe zu kommen, die der gewünschten Größe des 'QGLWidget' entspricht. – Nobody