我想在顶部的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都始终停留在主窗口小部件的中心,在它们之间留有很多空间。
答案 0 :(得分:0)
您已将表格的最大高度固定为200像素,布局正在通过占用尽可能多的空间来处理它。
要保持此高度,可以在布局的末尾插入 stretch :
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)