gpt4 book ai didi

c++ - 在多个图形 View 中显示和选择的自定义小部件

转载 作者:行者123 更新时间:2023-11-28 08:05:52 25 4
gpt4 key购买 nike

我有一组图像,通过 QGraphicsView 小部件动态生成,我希望我的用户可以在它们之间进行选择。为此,我会在自定义小部件内显示某种网格中的可用图像,并让用户单击他们感兴趣的图像。

出现多个问题:

  • 是否有适合此目的的现有小部件?
  • 我应该找到一种方法来禁用 QGraphicsView 项目的所有鼠标事件处理,还是可以在图形 View 前面添加一个透明小部件来拦截它们?
  • 显示许多 QGraphicsView 小部件(最多数百个)是否存在性能问题?我应该先将它们导出为纯图像吗?

最佳答案

首先,不,没有专门为此目的设计的小部件。

我认为您没有理解 QGraphicsView 的用途。它用于显示 QGraphicsScene,它意味着容纳许多 QGraphicsItems。根据您的帖子,我不明白您为什么需要多个 QGraphicsViews。您可以简单地拥有一个 QGraphicsView 并在其场景内显示许 multimap 像。例如,参见 QGraphicsPixmapItem .

您绝对不应该拥有数百个 QGraphicsView。您可能只想要一个(尽管在某些情况下可能有一些是合理的),在其中您在 QGraphicsScene 中显示许多 QGraphicsItems。您绝对可以同时看到数百个 QGraphicsItem。在您的情况下,您可能需要 QGraphicsPixmapItems,它是 QGraphicsItem 的子类。您甚至可以拥有多个 QGraphicsScenes,并使用 QGraphicsView::setScene 显示相关的一个。如果您希望用户能够从网格中选择图像,然后使用该图像,我会查看 State Pattern .

我想不出有任何理由在 QGraphicsViews、QGraphicsScenes 或 QGraphicsItems 中禁用鼠标处理。为什么这些不应该处理自己的鼠标事件?您可以(并且应该在必要时)将它们子类化并重新实现 mousePressEventmouseMoveEventmouseRelease 事件等以获得您想要的功能。

祝你好运!

关于c++ - 在多个图形 View 中显示和选择的自定义小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10295433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com