C++ 用于在多个图形视图中显示和选择的自定义小部件
我有一个通过QGraphicsView小部件动态生成的图像集合,我希望我的用户在其中进行选择。为此,我将在一个自定义小部件中以某种网格形式显示可用图像,并让用户单击他们感兴趣的图像 出现了多个问题:C++ 用于在多个图形视图中显示和选择的自定义小部件,c++,qt,selection,qgraphicsview,C++,Qt,Selection,Qgraphicsview,我有一个通过QGraphicsView小部件动态生成的图像集合,我希望我的用户在其中进行选择。为此,我将在一个自定义小部件中以某种网格形式显示可用图像,并让用户单击他们感兴趣的图像 出现了多个问题: 是否有一个现有的小部件已经适合此用途 我应该找到一种方法来禁用QGraphicsView项的所有鼠标事件处理,还是可以在图形视图前面添加一个透明的小部件来拦截它们 显示许多QGraphicsView小部件(最多几百个)是否存在性能问题?我应该先将它们导出为普通图像吗 首先,没有,没有专门为此设计的
- 是否有一个现有的小部件已经适合此用途
- 我应该找到一种方法来禁用QGraphicsView项的所有鼠标事件处理,还是可以在图形视图前面添加一个透明的小部件来拦截它们
- 显示许多QGraphicsView小部件(最多几百个)是否存在性能问题?我应该先将它们导出为普通图像吗
- 首先,没有,没有专门为此设计的小部件
我认为你没有领会QGraphicsView的作用。它用于显示一个QGraphicscene,用于保存许多QGraphicsSite。根据你的帖子,我不明白你为什么需要多个QGraphicsView。您只需拥有一个QGraphicsView,并在其场景中显示许多图像。例如,请参见
您绝对不应该拥有数百个QGraphicsView。您可能只需要一个(尽管在某些情况下可能有一些是合理的),其中在QGraphicscene中显示许多QGraphicsSite。您肯定可以同时看到数百个QGraphics站点。在您的例子中,您可能需要QGraphicsPixmapItems,它是QGraphicsItem的一个子类。您甚至可以有多个QGraphicsCENES,并使用
QGraphicsView::setScene
显示任何相关的QGraphicsCENES。如果您希望用户能够从网格中选择一个图像,然后使用该图像,我将查看
我想不出任何理由在QGraphicsView、QGraphicscenes或QGraphicsSitems中禁用鼠标处理。为什么它们不应该处理自己的鼠标事件?您可以(并且应该在必要时)对它们进行子类化并重新实现mousePressEvent
、mouseMoveEvent
、mousererelease
事件等,以获得所需的功能
祝你好运