QGridLayout中的动态行长度

时间:2014-05-26 21:50:28

标签: qt layout pyside

我希望使用PySide和Qt制作图像查看器,其中所有图像都是固定大小并以网格排列。我知道如何通过定义QGridLayout来设置基本代码,例如:

l = QGridLayout(10,10)
l.addItem(im1,0,0)
l.addItem(im2,0,1)
...

但是,我还希望每行的元素数量动态调整大小。我事先会知道有多少图像,但我不知道对话框有多大。因此,如果用户使对话非常小,则每行应该有2个图像,但如果它们最大化,则每行应该有(例如)10个图像。有没有办法让QGridLayout动态调整行大小?

1 个答案:

答案 0 :(得分:1)

您不需要为此目的使用QGridLayout,而是使用FlowLayout。 FlowLayout不是Qt中的内置布局,但它是由其他人开发的,您只需将FlowLayout类复制到项目文件即可使用它。 thisFlowLayout的示例。将整个代码复制到IDE并运行它(记得将​​顶部的import语句更改为PySide,因为该代码使用的是PyQt4)。执行代码后,调整出现的窗口大小,您将看到窗口内的pushButtons将自动调整。