Как я могу уменьшить размеры всех виджетов, если один из их детей изменил рост?
Они расширяются, если новая высота больше, но не уменьшаются, если меньше.
Я пытался updateGeometry()
, но ничего не изменилось.
Вот пример, после того, как дочерний элемент shran, рост родителей не меняется:
import sys
from PyQt4.QtGui import *
class MainWindow(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
# inner widget
self.widget = QGroupBox('inner')
vbox_inner = QVBoxLayout(self.widget)
button1 = QPushButton('100')
button1.clicked.connect(lambda: self.change_height(100))
vbox_inner.addWidget(button1)
button2 = QPushButton('200')
button2.clicked.connect(lambda: self.change_height(200))
vbox_inner.addWidget(button2)
# outer layout
vbox = QVBoxLayout(self)
vbox.addWidget(self.widget)
# resizing element
def change_height(self, height):
self.widget.setFixedHeight(height)
app = QApplication(sys.argv)
myapp = MainWindow()
myapp.show()
sys.exit(app.exec_())
Есть ли способ настроить все родительские виджеты?
ответ на Python:
widget = self.parent()
while widget:
widget.adjustSize()
widget = widget.parent()