【问题标题】:Cannot align top QTableWidget in QVBoxLayout无法在 QVBoxLayout 中对齐顶部 QTableWidget
【发布时间】:2019-06-26 16:46:59
【问题描述】:

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

【问题讨论】:

    标签: python pyqt5 pyside2


    【解决方案1】:

    您将表格的最大高度固定为 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-22
      • 2017-08-02
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 2018-06-10
      相关资源
      最近更新 更多