Wie ändere ich den Inhalt einer QScrollArea, wenn mehr Widgets darin platziert werden?
Ich habe eine QScrollArea Widget, welches dann beginnt, leer;
Er hat ein vertikales layout, mit einem QGridLayout, und ein vertikaler spacer, um es zu halten auf der Oberseite und verhindern, dass es sich über den gesamten scroll-Bereich;
Anderswo im Programm, es ist ein QTextEdit, die, wenn Sie geändert wurde, Ihren Inhalt gescannt, um die "Spezies" - Elemente, und dann werden Sie Hinzugefügt, um die QGridLayout. Alle Arten, die Elemente, die entfernt wurden, werden ebenfalls entfernt. Dieses bit funktioniert;
Ich drehte den vertikalen Bildlaufleiste auf die ganze Zeit, so dass, wenn es scheint, dass es nicht sitzen oben auf den anderen Sachen drin. Beachten Sie, dass die scroll-Balken größer ist als der scroll-box zwar bereits, trotz nicht zu müssen.
Dies ist das problem. Der scroll-Bereich scheint eingestellt zu werden, und ich kann es nicht ändern. Wenn ich weitere Zeilen hinzufügen, um die QGridLayout, den scroll-Bereich nicht in der Größe erhöhen.
Statt, es bleibt die gleiche Größe, und drückt die QGridLayout, so dass es hässlich Aussehen (auf den ersten);
Und dann nach dem hinzufügen von noch mehr wird es unbrauchbar;
Beachten Sie, dass die Bildlaufleiste ist immer noch die gleiche Größe wie im vorherigen Bild. Die ersten beiden Bilder sind vom Qt-Designer, der die nachfolgenden 3 werden vom Programm ausgeführt.
Wenn ich die Größe der Fenster, so dass die QScrollArea wächst, dann sehe ich das:
Darauf hinweist, dass es einige layout innerhalb der scroll-Bereich, der keine Größenänderung richtig.
Meine Frage ist; was muss ich tun, um den scrollbaren Bereich der widget-Größe dynamisch, wie ich hinzufügen und entfernen von QGridLayout?
InformationsquelleAutor der Frage will | 2012-10-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Dokumentation eine Antwort :
Legen Sie es auf true.
InformationsquelleAutor der Antwort UmNyobe
Wenn du hier kommst von Google und nicht mit Glück mit der akzeptierten Antwort, das ist, weil Sie fehlt der andere Geheimnis Aufruf:
QScrollArea::setWidget
. Sie müssen erstellen und explizit identifizieren ein einzelnes widget auf dem Bildschirm verschoben werden. Es ist nicht genug, fügen Sie einfach das Element, wie ein Kind! Hinzufügen mehrerer Elemente direkt in dieScrollArea
wird auch nicht funktionieren.Dieses Skript zeigt ein einfaches Beispiel arbeiten QScrollArea:
InformationsquelleAutor der Antwort Artfunkel
Warum verwenden nicht Sie eine QListView für deine Zeilen, es gelingen wird, alle Probleme für Sie? Stellen Sie nur sicher, dass, nachdem Sie es hinzufügen, klicken Sie auf die Klasse (oben rechts, Fenster-designer) und weisen Sie einem layout oder es wird nicht erweitern richtig.
Benutze ich ein QLIstWidget innerhalb einer QScrollArea, um ein scrollbares Bild Liste
Versuchen, diese für das hinzufügen von anderen Objekten auf der Liste, das ist, wie ich ein Bild hinzufügen, um der Liste.
InformationsquelleAutor der Antwort ejectamenta