pysides6柱面从设置向后向后

发布于 2025-01-17 21:13:22 字数 669 浏览 2 评论 0原文

我正在尝试使用一个文件浏览器创建一个应用程序,该应用程序浏览器是Tab Pane的宽度的1/5。

为什么从我设置的布局列向后向后向后?

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)

I'm trying to create an app with a file browser that is 1/5 the width of a tab pane.

Why is the layout columnSpan backwards from what I set it?

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)

column widths

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑梦风尘 2025-01-24 21:13:22

行和列跨度是指布局的网格单元格,而不是每个行或列的比率。

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

它的工作原理与表格完全一样:当您 span 一个单元格使其占据2列,但是第二列没有宽度,单元格将保持相同的尺寸。

请注意,即使您在另一行中有小部件,在任何这些列中都有小部件,这仍然不会 表示Tab小部件将占据第一个空间的5倍,尤其是如果这些小部件很小: QTREEVIEW继承QABSTRACTITEMVIEW,默认情况下,它在两个方向上都具有 扩展大小策略。

要达到想要的比率,您必须使用 设置任何跨度,除非您实际需要其他行中的小部件:

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

The row and column span refer to the grid cells of the layout, not the ratio of each row or column.

Setting a span means that the widget (or layout) will occupy that amount of cells, not that it will be 5 times bigger, as the size of each cell depends on the size (and hint) of its content. Since you have nothing else in the other 4 columns, those cells are actually empty.

It works exactly like a table: when you span a cell to make it occupy 2 columns, but the second column has no width, the cell will keep the same size.

Note that even if you had widgets in another row and in any of those columns, this would still not mean that the tab widget would occupy 5 times the space of the first, especially if those widgets were small: QTreeView inherits QAbstractItemView, which by default has an expanding size policy in both directions.

To achieve the wanted ratio, you must use setColumnStretch(), and not set any span unless you actually need it for widgets in other rows:

        layout.addWidget(FileTree())
        layout.addWidget(Tabs(), 0, 1)
        layout.setColumnStretch(0, 1)
        layout.setColumnStretch(1, 5)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文