无法在QVBoxLayou中对齐顶部QTableWidget

2024-09-28 21:53:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在顶部的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都保持在主小部件的中心,在它们之间留有很多空间


Tags: 方法selfappinit部件qtablewidgetqvboxlayoutaddwidget
1条回答
网友
1楼 · 发布于 2024-09-28 21:53:30

您将表的最大高度固定为200px,布局通过占用尽可能多的空间来处理它

要保持此高度,可以在布局末尾插入一个拉伸

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)

相关问题 更多 >