Qt QHBoxLayout Zellgröße Fragen
Frage
Für diejenigen von euch, die nicht meine Qt questoins gelesen, ich lerne für ein Projekt Qt. Ich habe nur überhaupt wenig Erfahrung mit GUI-Design, und nicht in Qt.
Ich habe eine horizontale Gliederung, die ich mit einigen Tasten auffüllen möchte. Ich kann diese Tasten in ganz gut füttern, aber meine frühen Quadratmetern Taste gestreckt horizontal mehr Platz zu nehmen.
Ich mag, dass die Layout-Manager bestimmen den besten Weg, um Größe diese Tasten lassen, aber ich mag auch ihre ursprünglichen Proportionen intakt bleiben. Zum Beispiel, wenn ich mit 32X32 Tasten beginnen würde, dass sie alle im Layout schrumpfen müssen passen, möchte ich sie proportional schrumpfen, so dass die Breite zu Höhe Skala gehalten wird. 20X20, 16X16, würde 12X12 alles ganz gut, aber 24X16 wäre ein Beispiel für Dimensionen, die nicht akzeptabel sind.
Ich habe mit einer Größe von Richtlinien auf den Tasten und Stretch Optionen gebastelt. Ich sehe nicht, auch nach den QPushButton und QHBoxLayout Klassen zu lesen, wie dies zu tun. Wie ist es erreicht?
Danke.
Lösung
Solange ich die Frage richtig verstanden habe, denke ich, was Sie wollen QBoxLayout::addStretch()
ist. Dies wird ein Abstands Objekt hinzufügen, das den ungenutzten Raum füllt. So werden die Tasten haben ihre ideale Größe und der Abstandshalter wird den Rest füllen. Sie können versuchen, mit dieser in Designer experimentieren, es ist einfacher, als die Schreib- / kompilieren / ausführen Zyklus.
Andere Tipps
Sie sollten einen Blick auf die Antworten nehmen href="https://stackoverflow.com/questions/1631574/how-to-allow-scaling-with-uniform-aspect-ratio-in-pyqt"> zum . Dies ist eine kurze Zusammenfassung meiner Antwort gibt.
Sie benötigen ein eigenes Derivat von QLayoutItem zu schaffen, die bool hasHeightForWidth()
und int heightForWidth( int width )
überschreibt das Seitenverhältnis zu erhalten. Sie könnte entweder auf die Schaltfläche in und Abfrage es passieren, oder Sie könnten nur das Verhältnis direkt eingestellt. Sie werden auch sicher, dass das Widget vornehmen müssen () Funktion einen Zeiger auf die richtige Taste zurück.
Sobald dies geschehen ist, können Sie ein Layout-Element zu einem Layout auf die gleiche Weise hinzufügen würden Sie ein Widget. Also, wenn Ihr Schaltfläche wird hinzugefügt, ändern Sie Ihre benutzerdefinierte Layout Elementklasse zu verwenden.
Ich habe nicht wirklich irgendetwas davon getestet, so dass es eine theoretische Lösung an dieser Stelle ist. Ich weiß nicht von irgendeiner Weise dieser Lösung durch Designer zu tun, wenn dies gewünscht wurde.