Größenänderung von qt-widgets, wenn Ihre Kinder versteckt sind
Wie würde ich mich über die Größe des widget, wenn der retry-Kind versteckt, so dass es aussieht wie im ersten Bild? Die Haupt-layout ist ein QVBoxLayout, der retry-Kind ist ein widget mit einem QVBoxLayout als gut.
Ich habe versucht, die folgenden:
- update()
- updateGeometry()
- setGeometry(childrenRect())
- layout()->aktivieren()
auf dem Haupt-widget sobald ich habe eingestellt, dass der retry-widget ausgeblendet. Muss ich abfangen, ein Ereignis, das zu tun?
InformationsquelleAutor der Frage laura | 2010-03-18
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
adjustSize
Funktion können tun, was Sie wollen.InformationsquelleAutor der Antwort Patrice Bernassola
Hier ist ein einfaches Beispiel, das keine auto-resize-auf-widget ausblenden/anzeigen.
dialog.h-Datei:
und main.c
InformationsquelleAutor der Antwort user1175197
Mein problem war ein wenig anders, dass ich hatte ein top-level-QWidget (statt einem QDialog oder ein QMainWindow) , hatten Kinder in einem layout. Wenn diese Kinder wurden Größenänderung zu größerendie QWidget würde die Größe unterzubringen, aber nicht, wenn Sie KLEINER geworden sind. Ähnlich wie oben, die Gegend, nur hatte der leere Raum. Ich fand schließlich eine Lösung:
Dem layout in meinem QWidget hatte eine Eigenschaft, die man als setSizeConstraint(). Dies ist normalerweise eingestellt auf "QLayout::SetDefaultConstraint", die einfach wirkt sich auf die "minimumSize" der QWidget, der ihn besitzt. Stattdessen wählte ich "QLayout::SetFixedSize", die aus dem layout passen die festen Größe des besitzenden QWidget, effektiv machen Sie es KLEINER, wenn es sein musste.
InformationsquelleAutor der Antwort Lee Dixon
Dies ist eine, die ich gerade entwickelt eine Antwort!!! ( Hinweis: dieser wird in PyQt4 form )
Ich habe die Fähigkeit, um die Größe meiner app-Fenster, wenn ein-und ausblenden von zusätzlichen Platten.
Aber in der Vergangenheit landete ich nur Neukonfiguration des UI und/oder work-flow so, dass die re-Dimensionierung der Fenster war nicht notwendig. Aber jetzt ist es ein notwendiges muss.
Das Fenster kann die Größe neu, während seiner Erstellung. Sie können das Fenster die Größe neu direkt (z.B. selbst.Größe( xSize, ySize )
Jedoch, wenn Sie einige Zeilen code, die Erfassung der benötigten Größen, versteckt Sie den gewünschten Abschnitt neu berechnet, was die Größe sollte sein, die Größe neu zu sein scheint, nicht auf allen.
(Beispiel)
Nichts. Funktioniert nicht. Warum nicht?
Heute ist die Jagd immer noch auf eine Antwort nicht kommen mit eine tragfähige Antwort. Es gibt mehrere Angebote für den Optionen. Jagd bis die widget-Hierarchie, zu entkräften, adjustSize. Eine ziemlich eingehende layout schütteln, die einfach nicht arbeiten, wenn Sie versuchen, um die Größe des Hauptfenster. Es war auch eine überwältigende Reaktion zu sagen, um Ihre Einschränkung, um FixedSize. Aber das eher Niederlagen der ganze Zweck, ein bisschen wie zu sagen, schneiden Sie Ihre hand aus am Handgelenk, wenn Sie einen Nagel hängen.
Allerdings habe ich ja zufällig jemanden, der hatte einen gewissen Erfolg mit Graben und entdecken, dass der Grund für die re-Größe ist nicht hold ist, weil der Warteschlange Gepostet Ereignisse, die setzt die Größe ändern.
Seine Lösung war, laufen die QApplication.sendPostedEvents() nur, bevor Sie Ihre Anwendung in der Größe, so dass die Ereignisse in der Warteschlange nicht zurückgesetzt-Ihr Fenster.
Ja, und Nein.
Ja, das ist die Lösung, und ich bin sicher, es ist ein schöner Weg, es zu tun, aber Sie brauchen, um wirklich schütteln die Warteschlange aus wie ein gewaschen Farbroller ersten.
Hier ist mein einfaches snippet, dass ich eingerichtet, dass so weit scheint solide zu sein.
NÖ. Es ist nicht schön. Aber bei den meisten habe ich nur gesehen das schütteln der lackrolle zweimal vor dem Gebuchten Veranstaltungen erlaubt, das Fenster zu verkleinern.
Keine Notwendigkeit zu sperren, Einschränkungen oder schütteln des übergeordneten widgets oder klettern durch die Hierarchie nach Größe-Hinweise.
InformationsquelleAutor der Antwort B4adle7