如何在PyQt的QTabWidget标签页中让QLineEdit垂直拉伸填充空白区域
解决方案
核心问题原因
你当前的实现存在两个核心错误导致QLineEdit无法垂直拉伸:
- 不应该直接给
QTabWidget本身设置布局,QTabWidget的内部布局由自身管理,用于容纳标签栏、页面容器等内置组件,直接覆盖会导致布局逻辑异常 QLineEdit默认的垂直尺寸策略为Fixed,默认仅保留固定高度,不会跟随父布局自动拉伸
修改后的可用代码
class Tab(QTabWidget): def __init__(self): super().__init__() TabButton = QPushButton() TabButton.setText("+") TabButton.clicked.connect(self.getTabName) self.setCornerWidget(TabButton) tabBar = TabBar(self) self.setTabBar(tabBar) # 1. 创建标签页容器部件 tab_page = QWidget() # 2. 给容器部件设置布局,不要给QTabWidget本身设布局 tablayout = QHBoxLayout(tab_page) self.ProgressBox = QLineEdit(self) ProgressBox2 = QLineEdit(self) ProgressBox3 = QLineEdit(self) # 3. 修改三个输入框的垂直尺寸策略为扩展,支持垂直拉伸 for line_edit in [self.ProgressBox, ProgressBox2, ProgressBox3]: line_edit.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) tablayout.addWidget(self.ProgressBox, 1) tablayout.addWidget(ProgressBox2, 1) tablayout.addWidget(ProgressBox3, 1) # 4. 将容器部件作为标签页添加到QTabWidget中 self.addTab(tab_page, "第一个标签页")
效果说明
修改后三个QLineEdit会自动均分水平空间,同时垂直方向撑满整个标签页的可用区域,不会出现超出边界的问题。如果需要添加多个标签页,重复创建QWidget容器、设置布局、调用addTab的流程即可。
内容的提问来源于stack exchange,提问作者bluends
相关产品推荐
相关产品推荐

