包括 QStackedLayout 会弄乱布局
Including QStackedLayout messes up layout
我的主要布局是一个 HBoxLayout,左边是一个 Textedit,右边是 VBoxlayout 中的一些 PushButton。 top_right.
上的按钮有一些嵌套
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?
P.S。从这个例子中我想要 stackedlayout 的原因并不明显,但我想保持这个例子简单。
P.P.S。该示例在 Python 中,但欢迎使用 C++ 回答
在这种情况下,一个可能的解决方案是将拉伸因子从 1 设置为 QTextEdit,将 0 设置为“右”布局:
main_layout = QHBoxLayout(self)
main_layout.addWidget(left, stretch=1)
main_layout.addLayout(right, stretch=0)
我的主要布局是一个 HBoxLayout,左边是一个 Textedit,右边是 VBoxlayout 中的一些 PushButton。 top_right.
上的按钮有一些嵌套 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?
P.S。从这个例子中我想要 stackedlayout 的原因并不明显,但我想保持这个例子简单。
P.P.S。该示例在 Python 中,但欢迎使用 C++ 回答
在这种情况下,一个可能的解决方案是将拉伸因子从 1 设置为 QTextEdit,将 0 设置为“右”布局:
main_layout = QHBoxLayout(self)
main_layout.addWidget(left, stretch=1)
main_layout.addLayout(right, stretch=0)