当子窗口隐藏时,调整主窗口的大小。
可以使用QLayout::setSizeConstraint()函数来自动调整父窗口的大小,以适应其子窗口的大小。以下是使用QHBoxLayout和QVBoxLayout动态添加窗口小部件的示例:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
okButton = QPushButton("OK")
cancelButton = QPushButton("Cancel")
hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(okButton)
hbox.addWidget(cancelButton)
label = QLabel("This is an example!")
vbox = QVBoxLayout()
vbox.addWidget(label)
vbox.addLayout(hbox)
self.setLayout(vbox)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Example')
self.show()
def hideEvent(self, event):
self.parent().layout().setSizeConstraint(QVBoxLayout.SetMinimumSize)
super().hideEvent(event)
def showEvent(self, event):
self.parent().layout().setSizeConstraint(QVBoxLayout.SetDefaultConstraint)
super().showEvent(event)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在此示例中,当QWidget被隐藏时,setSizeConstraint()函数将QVBoxLayout的大小调整为最小大小的范围。当QWidget被显示时,setSizeConstraint()函数将QVBoxLayout的大小设置为默认设置。