Qt 动态布局

标签 qt pyqt

我正在尝试在缩略图模式下实现类似于文件资源管理器的布局。项目位于网格中,它们之间的距离固定,当您调整主窗口大小时,项目会重新定位以适合。

例如,在一个小窗口上,您有:

i1 i2 i3
j1 j2 j3
k1 k2 k3

但是当窗口变宽时,项目变成:

i1 i2 i3 j1
j2 j3 k1 k2
k3

如果你让窗口更宽,项目变成:

i1 i2 i3 j1 j2
j3 k1 k2 k3

我正在尝试尽可能简单地实现它,也许只使用默认类?...

如果你放了无数个项目,HBoxLayout 不会溢出;他们只是无限排队。

GridLayout 无能为力,因为在您先放置项目后,在调整窗口大小后,您必须清理布局,重新计算项目数量,使用新顺序重新填充布局。它不会自动重新定位项目。

另一种方法是将项目放在 Qt3 样式的 TableWidget 中。但那是一样的;调整窗口大小后,您已经计算了新窗口中适合多少项目,清理表格并重新填充。

还有固定位置方法。您将项目放在固定位置并在每次调整窗口大小后移动它们......这很头疼。

有没有人尝试过类似的东西 - 浏览器或图像查看器?您是如何解决这个问题的?

最佳答案

我认为您需要考虑执行 FlowLayout 之类的操作从示例集中。请注意,有一个 python port

关于Qt 动态布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9117807/

相关文章:

python - 如何使用 PySide 将 .ui 文件加载到 python 类中?

python - mouseMoveEvent 和 mousePressEvent 中的鼠标位置不同 : QGraphicsObject

qt - Qt拖放中的热点是什么意思?

c++ - 无法从 ‘QAction*’ 转换为 ‘QAction’

android - Qt Quick Controls 2 启动画面

c++ - qt中什么时候应该将子对象声明为其父类的成员变量?

pyqt - 如何重新启动我的 pyqt 应用程序?

python - PySide QSelectionModel.isRowSelected() 函数中的父级是什么?

c++ - Qt自定义QPushButton不在布局上显示

qt - PyQt:在运行时将小部件添加到滚动区域