![](/img/trans.png)
[英]Qt QGraphicsProxyWidget interaction with QGraphicsScene
[英]Qt QGraphicsScene copy
我有一个QGraphicsScene,我想复制并附加到列表的开头。 最好的方法是什么?
QGraphicsScene* m_scene = new QGraphicsScene();
QGraphicsScene* m_DuplicateScene;
QList<QGraphicsScene *>m_list;
这样做会非常复杂,因为您对m_scene
。 即使您dynamic_cast
并为每种QGraphicsItem
类型创建了clone()
函数,您仍然需要记住其他人可以将QGraphicsItem
子类化并创建自己的图形项类型,从而使它们不可克隆。
基本上,不可以,您无法复制QGraphicsScene
(克隆流程中的所有项目)。 您甚至不能引用原始场景的子代的子代,因为QGraphicsItem
只能有一个场景。
当然,除非我缺少方法调用。 但是,搜索“克隆”,“复制”和“重复”不会产生任何结果。
关于第二个问题,请使用QList<T *>::push_front
。 因此, m_list.push_front
( m_DuplicateScene
);
(附带说明:您可以先添加到列表的开头,然后再添加到列表的末尾。)
我在项目中复制了QGraphicsScene的项目。 我正在用这种方式。 可能会有所帮助。
我有一个这样的课:
class DiagramScene : public QGraphicsScene
{
[some datas]
}
和这样的另一个类:
class DiagramItem : public QGraphicsItem
{
}
在复制功能中,我使用如下代码:
Diagram_Scene myScene;
foreach (QGraphicsItem *item, diagram_scene1->items())
{
if(item->type() == DiagramItem::Type)
{
DiagramItem *di = qgraphicsitem_cast<DiagramItem*>(item);
myScene.addItem(di);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.