0

我的主要布局是一个 HBoxLayout,左边是 Textedit,右边是 VBoxlayout 中的一些 PushButton。右上角的按钮有一些嵌套。

    but1 = QPushButton('button 1')
    but2 = QPushButton('button 2')
    but3 = QPushButton('button 3')

    right_top_widget = QWidget()
    right_top_layout = QVBoxLayout(right_top_widget)
    right_top_layout.setContentsMargins(0, 0, 0, 0)
    right_top_layout.addWidget(but1)
    right_top_layout.addWidget(but2)
    right_top_layout.addStretch()

    right_top_stack = QStackedLayout()
    right_top_stack.addWidget(right_top_widget)

    left = QTextEdit()
    right = QVBoxLayout()

    # One of these two:
    right.addWidget(right_top_widget)
    # right.addLayout(right_top_stack)

    right.addStretch()
    right.addWidget(but3)

    main_layout = QHBoxLayout(self)
    main_layout.addWidget(left)
    main_layout.addLayout(right)

当我将“right_top_widget”放入 StackedLayout 时,我的问题就出现了。

如果没有 StackedLayout,它看起来像这样: 没有堆栈

使用 StackedLayout 它看起来像这样: 带堆栈

我希望它看起来像最上面的图片。

你如何让 StackedLayout 发挥得更好并且表现得更像 BoxLayout?

PS我想要stackedlayout的原因在这个例子中并不明显,但我想保持例子简单。

PPS 示例使用 Python,但欢迎使用 C++ 回答

4

1 回答 1

0

在这种情况下,一种可能的解决方案是将拉伸因子从 1 设置为 QTextEdit,将 0 设置为“正确”布局:

main_layout = QHBoxLayout(self)
main_layout.addWidget(left, stretch=1)
main_layout.addLayout(right, stretch=0)
于 2021-06-22T07:00:18.733 回答