Pysides6 columnSpan 从设置向后

Pysides6 columnSpan backwards from setting

我正在尝试创建一个应用程序,其文件浏览器的宽度是选项卡窗格宽度的 1/5。

为什么布局 columnSpan 与我设置的相反?

class MainWindow(QMainWindow):

    def __init__(self):
        super(MainWindow, self).__init__()

        self.setWindowTitle("My App")

        layout = QGridLayout()

        layout.addWidget(FileTree(), 0, 0, 1, 1)
        layout.addWidget(Tabs(), 0, 1, 1, 5)

        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)

行列跨度是指布局的网格单元格,不是每行或每列的比例。

设置跨度意味着小部件(或布局)将占据该数量的单元格,而不是它会大 5 倍,因为每个单元格的大小取决于其内容的大小(和提示)。由于其他 4 列中没有其他内容,因此这些单元格实际上是 empty.

它的工作原理与 table 完全相同:当您 跨越 一个单元格使其占据 2 列,但第二列没有宽度时,该单元格将保留大小一样。

请注意,即使您在另一行和任何这些列中有小部件,这仍然意味着选项卡小部件将占用 space 第一个,特别是如果这些小部件很小:QTreeView 继承 QAbstractItemView,默认情况下在两个方向上都有一个 expanding 大小策略。

要达到所需的比率,您必须使用 setColumnStretch(),并且 不要 设置任何跨度,除非您确实需要它用于其他行中的小部件:

        layout.addWidget(FileTree())
        layout.addWidget(Tabs(), 0, 1)
        layout.setColumnStretch(0, 1)
        layout.setColumnStretch(1, 5)