gpt4 book ai didi

python - child 大小改变后缩小 parent 小部件

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:25 26 4
gpt4 key购买 nike

如果其中一个 child 的高度发生变化,我如何让所有小部件缩小?
如果新高度更大,它们会扩展,但如果更小,则不会收缩。

我尝试了 updateGeometry(),但它没有任何改变。

下面是例子,子元素shran后,父元素的高度不变:
enter image description here

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_())

有什么办法可以调整所有的 parent 小部件吗?

用 Python 回答:

widget = self.parent()
while widget:
widget.adjustSize()
widget = widget.parent()

最佳答案

您应该调用 adjustSize()你的“顶层”小部件(在本例中是你的 MainWindow)上的方法。

对于比您的示例更复杂的布局,您需要自己传播调用小部件层次结构。在 C++ 中,您可以这样做:

QWidget *w = <the widget you resized>->parentWidget();
while (w) {
w->adjustSize();
w = w->parentWidget();
}

关于python - child 大小改变后缩小 parent 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6166484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com