【问题标题】:QGraphicsView with automatic items placing具有自动放置物品的 QGraphicsView
【发布时间】:2010-12-05 00:42:59
【问题描述】:

我想用 QGraphicsView 编写一个资产浏览器。它与使用 QGraphicsView 和 QGraphicsItems 的示例有点不同,因为我只想要一个滚动条,并且我希望项目在视口大小发生变化时自动移动。例如,当视口宽度大到足以显示 4 个资源时,它们应该显示如下:

aaaa
aaaa
aa

但是当视口缩小并且只能连续包含 3 个时,它应该像这样显示它们:

aaa
aaa
aaa
a

我不想自己移动这些资产并让图形视图管理它们。有没有可能?

我曾经写过这样的东西,但是使用QWidget和paintEvent,自己绘制所有资产并跟踪可以连续显示多少资产。用QGraphicsView能做的更简单吗?

【问题讨论】:

  • "QGraphicsView with automatic" 是一个标题,对这个问题没有多说。考虑改变它...
  • 谢谢,我一定是忘记完成标题了。

标签: python qt pyqt qgraphicsview


【解决方案1】:

QGraphicsView 支持布局。你要做的就是实现你自己的布局管理器,继承自 QGraphicsLayout。

对于您需要的布局,请查看 Qt 的 Flow Layout 示例。转换该示例将为您提供 QGraphicsFlowLayout。将您的 QGraphicsItems 添加到此布局并将您的 QGraphicsView 的布局设置为该布局,这样就可以了。

【讨论】:

  • 我一定会看看这个。谢谢 :-) 不知道,我可以将 QGraphicsView 的布局与 QGraphicsItems 一起使用。
【解决方案2】:

听起来你想要一个列表,而不是图形视图。可以设置一个列表来显示你想要的东西。查看puzzle example,注意左边的拼图列表。为所展示的案例进行设置看起来非常简单。

当然,如果你真的想在图形视图中使用它,我想你可以在视图中添加一个列表并在那里使用它。

【讨论】:

    【解决方案3】:

    我会使用自定义布局来做到这一点。尝试创建继承自 QGraphicsLayout 的自定义 Layout 类并管理它放置项目的方式。

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 2015-06-20
      • 2016-05-03
      • 1970-01-01
      相关资源
      最近更新 更多