Ich habe eine QTableWidget
, QTextEdit
- und Abbrechen - & okay-buttons.
Möchte ich diese widgets bleiben in der gleichen position relativ zueinander, und die QTableWidget
zu erweitern, wenn das Dialogfenster erweitert wird oder die Größe geändert...
Wie kann ich das tun?
InformationsquelleAutor PeterG | 2011-11-09
Müssen Sie sich in Der Qt-layout-system - layouts verwendet wird, handhaben automatisch Größenänderung Ihrer Objekte auf der Grundlage der Größe der Eltern.
Kombination mit
QWidget::setSizePolicy()
undQBoxLayout::setStretch()
(oder eherQBoxLayout::insertWidget(..., int stretch = 0, ...)
) wird Ihnen erlauben, zu erreichen, Verhalten Sie sich auf, wo nur bestimmte Objekte zu erweitern, um verfügbaren Raum, während andere bleiben eine Konstante Größe.Adressierung das Bild, das Sie gegeben haben oben als Beispiel:
Abgesehen von ziehen und ablegen von Objekten in der form, dies zu erreichen, Lösung habe ich:
sizePolicy
vontextEdit
zuFixed
.textEdit
'sminimumSize
für diesizePolicy
zu verwenden.layoutStretch
imcentralWidget
zu1,0
, d.h. weisen Sie den minimal möglichen Platz für die Elemente, die inhorizontalLayout
geben und alle verbleibenden Platz auftableWidget
.sorry für die Kommentar-Formatierung...
Sie haben die richtige Idee, aber wenn man mit dem Qt Designer, um das Layout Ihrer widgets, können Sie fügen Sie den layouts, und geben Sie stretch-Faktoren etc, sowie Einstellung sizePolicies (unter Verwendung der Eigenschaften-editor) alle ohne Designer. Der andere Vorteil ist, dass Sie in der Lage sein, um die Auswirkungen aller änderungen, die Sie machen, ohne um Ihre Anwendung zu erstellen.
also versuchte ich mit der layout-Einstellungen im designer, und ich habe meine widgets in einem raster Mode, aber die Zelle Größen nicht ändern. Wenn Sie sehen mein Bild, ich wollte meine textEdit zu schmal und lang und der Tisch groß sein... das Gitter ist nicht lassen Sie mich das tun... idk warum. wie würde ich passen die Größen?
basierend auf deinem Bild oben, würde ich nicht empfehlen, mit einem
QGridLayout
, sondern verschachteln derQTableWidget
zusammen mit einemQHBoxLayout
mit Ihren anderen widgets in einQVBoxLayout
. Siehe das update meiner Antwort oben.InformationsquelleAutor sjwarner