Qt 布局包装项目

时间:2021-03-12 06:43:22

标签: qt pyside pyside2 pyside6

我怀疑这是可能的,但只是想问问以确保我没有错过任何东西。

是否可以通过任何方式使项目包装在 Qt 布局中?

例如,如果我将窗口的高度设置为特定值,如果垂直向下的项目太多,我希望项目环绕并创建第二列。因此,在此示例代码中,您最终将所有按钮置于彼此下方。我想要的是左边有 1、2、3,然后 4、5、6 应该被包装到右边的第二列。我能想到的唯一可能的解决方案是取窗口高度,然后除以项目数。并以这种方式获取列数。我不介意更改布局类型以使其正常工作,因此您可以这样做。请记住,这必须是动态的,因此它应该适用于 4 个项目或 24 个项目,仅作为示例。我知道您可以手动创建一个网格并自己“手动”定位它们。

import sys
from PySide2 import QtCore, QtGui, QtWidgets

app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
# This has no effect, since the amount of buttons increases the height anyways
window.resize(100, 100)

button1 = QtWidgets.QPushButton("One")
button2 = QtWidgets.QPushButton("Two")
button3 = QtWidgets.QPushButton("Three")
button4 = QtWidgets.QPushButton("Four")
button5 = QtWidgets.QPushButton("Five")
button6 = QtWidgets.QPushButton("Six")

layout = QtWidgets.QVBoxLayout()

layout.addWidget(button1)
layout.addWidget(button2)
layout.addWidget(button3)
layout.addWidget(button4)
layout.addWidget(button5)
layout.addWidget(button6)

window.setLayout(layout)
window.show()

sys.exit(app.exec_())

0 个答案:

没有答案
相关问题