我有一组图像,通过QGraphicsView小部件动态生成,我希望我的用户可以在它们之间进行选择。为此,我会在自定义窗口小部件中显示某种网格中的可用图像,并让用户单击他们感兴趣的图像。
出现了多个问题:
答案 0 :(得分:1)
首先,不,没有专门为此目的而设计的小部件。
我认为你并没有抓住QGraphicsView的用途。它用于显示QGraphicsScene,用于保存许多QGraphicsItems。根据你的帖子,我不明白为什么你需要多个QGraphicsViews。您只需拥有一个QGraphicsView并在其场景中显示许多图像。例如,请参阅QGraphicsPixmapItem。
你绝对不应该有数百个QGraphicsViews。你可能只想要一个(虽然在某些情况下有一些可能是合理的),你在QGraphicsScene中显示许多QGraphicsItems。你肯定可以同时看到数百个QGraphicsItems。在您的情况下,您可能需要QGraphicsPixmapItems,它是QGraphicsItem的子类。您甚至可以拥有多个QGraphicsScenes,并使用QGraphicsView::setScene
显示相关的QGraphicsScenes。如果您希望用户能够从网格中选择图像,然后使用该图像,我会查看State Pattern。
我无法想到在QGraphicsViews,QGraphicsScenes或QGraphicsItems中禁用鼠标处理的任何理由。为什么这些不能处理自己的鼠标事件?您可以(并且应该在必要时)将它们子类化并重新实现mousePressEvent
,mouseMoveEvent
,mouseRelease
事件等,以获得您想要的功能。