我希望使用PySide和Qt制作图像查看器,其中所有图像都是固定大小并以网格排列。我知道如何通过定义QGridLayout
来设置基本代码,例如:
l = QGridLayout(10,10)
l.addItem(im1,0,0)
l.addItem(im2,0,1)
...
但是,我还希望每行的元素数量动态调整大小。我事先会知道有多少图像,但我不知道对话框有多大。因此,如果用户使对话非常小,则每行应该有2个图像,但如果它们最大化,则每行应该有(例如)10个图像。有没有办法让QGridLayout
动态调整行大小?
答案 0 :(得分:1)
您不需要为此目的使用QGridLayout
,而是使用FlowLayout
。 FlowLayout不是Qt中的内置布局,但它是由其他人开发的,您只需将FlowLayout
类复制到项目文件即可使用它。 this是FlowLayout
的示例。将整个代码复制到IDE并运行它(记得将顶部的import语句更改为PySide,因为该代码使用的是PyQt4)。执行代码后,调整出现的窗口大小,您将看到窗口内的pushButtons将自动调整。