QGroupBox内QPushButton、QLabel在窗口缩放时无法自动调整大小的问题
问题根因
你当前的QGroupBox自身未绑定顶层布局,内部承载QHBoxLayout、QVBoxLayout的容器widget是固定几何尺寸,不会跟随QGroupBox的缩放变化,所以才会出现GroupBox变大但内部控件尺寸不变的问题。
解决方案1:直接在Qt Designer中修改(推荐)
- 打开ui文件,选中第一个
groupBox控件,右键点击选择「布局」→「水平布局」,内部按钮会自动填充整个GroupBox空间 - 选中第二个
groupBox_2控件,右键点击选择「布局」→「垂直布局」,内部标签会自动填充整个GroupBox空间 - 可选操作:选中
centralwidget,右键设置为垂直布局,就无需在代码中手动编写主布局绑定逻辑
解决方案2:无需修改ui,直接在代码中补充布局绑定
修改你的初始化代码如下:
import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from resize_error import * class MenuMain(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(MenuMain, self).__init__(parent) self.setupUi(self) # 给两个GroupBox分别绑定内部布局 self.groupBox.setLayout(self.horizontalLayout) self.groupBox_2.setLayout(self.verticalLayout) self.lytMain = QVBoxLayout() self.centralwidget.setLayout(self.lytMain) self.lytMain.addWidget(self.groupBox) self.lytMain.addWidget(self.groupBox_2) if __name__ == "__main__": app = QApplication(sys.argv) mnuMain = MenuMain() mnuMain.show() sys.exit(app.exec_())
原理解释
你在Qt Designer中绘制的布局默认挂载在独立的临时QWidget容器上,该容器有固定的坐标和尺寸参数,不会跟随父控件缩放。将布局直接绑定到QGroupBox本身后,布局会自动适配QGroupBox的大小变化,内部控件也会同步拉伸填充可用空间。
内容的提问来源于stack exchange,提问作者ProgramMasher
相关产品推荐
相关产品推荐

