python - 无法在 QVBoxLayout 中对齐顶部 QTableWidget
问题描述
我想在顶部的 QVBoxLayout 中对齐 QLabel 和 QTableWidget 。
使用 setAlignment 方法将顶部的 QLabel 与 QVBoxLayout 对齐没有问题。当我将 QTableWidget 添加到 QVBoxLayout 时,出现了问题。
我的代码:
class AWidget(QWidget):
def __init__(self):
super().__init__()
self.aLabel = QLabel('Table')
self.aTable = QTableWidget(6, 6)
self.aTable.setMaximumHeight(200)
self.aLayout = QVBoxLayout()
self.aLayout.addWidget(self.aLabel)
self.aLayout.addWidget(self.aTable)
self.aLayout.setAlignment(Qt.AlignTop)
self.setLayout(self.aLayout)
app = QApplication([])
aWidget = AWidget()
aWidget.resize(640, 480)
aWidget.show()
sys.exit(app.exec_())
QLabel 必须位于主小部件的顶部,然后是其下方的 QTableWidget。但是,QLabel 和 QTableWidget 都保持在主小部件的中心,在它们之间留下了很多空间。
解决方案
您将表格的最大高度固定为 200 像素,布局通过占用尽可能多的空间来处理它。
你想保持这个高度,你可以在布局的末尾插入一个拉伸:
class AWidget(QWidget):
def __init__(self):
super().__init__()
self.aLabel = QLabel('Table')
self.aTable = QTableWidget(6, 6)
self.aTable.setMaximumHeight(200)
self.aLayout = QVBoxLayout()
self.aLayout.setAlignment(Qt.AlignTop)
self.aLayout.addWidget(self.aLabel)
self.aLayout.addWidget(self.aTable)
self.aLayout.addStretch() # Adding a stretch to occupy the empty space
self.setLayout(self.aLayout)
推荐阅读
- node.js - EJS:ReferenceError:未定义机器人
- excel - 我不断收到“您为此函数输入了太多参数”为什么
- c# - 将 .NET Core 2.1 迁移到 .NET Core 3.0
- swift - 如何检查
在 Swift 5 中并避免“NSInvalidArgumentException”? - azure - 将 Blob 存储密钥更新到应用程序
- docker - 无法在 Oracle Linux 上启动 Docker
- html - 如何在引导程序中以自定义宽度在页面上的 1 行中显示 5 个输入
- arrays - as3 2d 数组,随机数不会在行或列中产生 3 个
- amazon-web-services - AWS DocumentDB 将流数据可用性从默认更改为 24 小时
- android - 带有 Google Auth (Firebase) 的 Android 安全和 RESTFUL 服务器