2017-10-12 3 views
0

Ich versuche, meine QTextEdit Widget auf die gesamte Zelle der QGridLayout zu erzwingen. Ich habe viele verschiedene Kombinationen aus QSizePolicy und sizeHint() ausprobiert, aber nichts hat den gewünschten Effekt.Widget in pyqt erweitern

In dem Beispiel unten habe ich ein Haupt-Widget der Mindestgröße 800x600 und ein weiteres Widget 'Blau' der Größe 100x100 in Spalte 1. So möchte ich die QTextEdit in Spalte 0 700x600 sein.

Im Allgemeinen möchte ich "bearbeiten" zu sein (n- blue.width()) xm, wenn mein Haupt Widget auf nxm Größe geändert wird.

import sys 
from PyQt5 import QtWidgets, QtCore 

if __name__ == '__main__': 
    qApp = QtWidgets.QApplication(sys.argv) 

    mainWidget = QtWidgets.QWidget() 
    mainWidget.setMinimumSize(800, 600) 
    mainLayout = QtWidgets.QGridLayout(mainWidget) 

    blue = QtWidgets.QWidget(mainWidget) 
    blue.setStyleSheet('background-color: blue') 
    blue.setFixedSize(100, 100) 
    edit = QtWidgets.QTextEdit(mainWidget) 

    ### what to do here? 
    policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, 
            QtWidgets.QSizePolicy.Expanding) 
    edit.setSizePolicy(policy) 
    ### 

    mainLayout.addWidget(edit, 0, 0, 1, 1, QtCore.Qt.AlignCenter) 
    mainLayout.addWidget(blue, 0, 1, 1, 1, QtCore.Qt.AlignCenter) 
    mainLayout.setColumnStretch(0, 1) 
    mainLayout.setColumnStretch(1, 0) 

    mainWidget.setLayout(mainLayout) 
    mainWidget.show() 
    sys.exit(qApp.exec_()) 

Antwort

0

Ich glaube, du bist gerade auf dem QGridLayout zu viele Einschränkungen platzieren. Versuchen Sie, die Widgets, um das Layout mit nur ...

mainLayout.addWidget(edit, 0, 0) 
mainLayout.addWidget(blue, 0, 1) 

Auch brauchen Sie vermutlich nicht explizit die Sizing-Richtlinie festgelegt - es sollte nur arbeiten, wie sie ist (es tut mir) .

Das voll, minimal würde funktionierendes Beispiel so etwas wie ...

import sys 
from PyQt5 import QtWidgets, QtCore 

if __name__ == '__main__': 
    qApp = QtWidgets.QApplication(sys.argv) 

    mainWidget = QtWidgets.QWidget() 
    mainWidget.setMinimumSize(800, 600) 
    mainLayout = QtWidgets.QGridLayout(mainWidget) 

    blue = QtWidgets.QWidget(mainWidget) 
    blue.setStyleSheet('background-color: blue') 
    blue.setFixedSize(100, 100) 
    edit = QtWidgets.QTextEdit(mainWidget) 

    mainLayout.addWidget(edit, 0, 0) 
    mainLayout.addWidget(blue, 0, 1) 

    mainWidget.show() 
    sys.exit(qApp.exec_()) 
+0

Danke, gibt es einen Grund dafür? Mein Verständnis ist, dass die Ausrichtung und die Größe Politik unabhängig sind? In diesem Beispiel ist die Ausrichtung natürlich unnötig. – Jonas

Verwandte Themen