在Qt中的两个qgraphicsecene实例中共享同一模型
我有一个应用程序,它使用qgraphicscene对象显示图表编辑器。我想创建一个只读版本的同一个对话框,但有能力让用户看到这两个在同一时间在Qt中的两个qgraphicsecene实例中共享同一模型,qt,qgraphicsview,Qt,Qgraphicsview,我有一个应用程序,它使用qgraphicscene对象显示图表编辑器。我想创建一个只读版本的同一个对话框,但有能力让用户看到这两个在同一时间 SimScene* pScene1 = new SimScene(model); // adds model to scene SimScene* pScene2 = new SimScene(model); // adds model to scene QGraphicsView* pView1 = new QGraphicsView(); pVie
SimScene* pScene1 = new SimScene(model); // adds model to scene
SimScene* pScene2 = new SimScene(model); // adds model to scene
QGraphicsView* pView1 = new QGraphicsView();
pView1->setScene(pScene2);
QGraphicsView* pView1 = new QGraphicsView();
pView2->setScene(pScene2);
当我创建两个QGraphicscene实例并在第二个实例上使用addItem时,它会从第一个实例中删除所有项目。Qt是否支持场景之间的模型共享?我唯一的选择是使用相同的场景并尝试自定义视图吗?后面的一个似乎不起作用,因为对象选择信息在共享的图形项目中,所以如果禁用它们上的标志,它们在两个视图中都将成为只读。任何建议都将不胜感激。谢谢。我认为您正在模型类中存储QSceneItems。因为pScene1和pScene2不仅尝试共享模型本身,还尝试共享场景项目。这将不起作用,因为没有任何场景项 如何修复它?使模型不知道任何GUI。每当发生有趣的事情时,让它发出changed()通知 然后,让每个SimScene将模型包装到它想要的QSceneItems中,并处理changed()通知 例如: 型号: 图表 边缘, 顶点
GUI 辛森, 基奇, QVertex, QSimInfo, Qbackground等等。。。
我认为您正在模型类中存储QSceneItems。因为pScene1和pScene2不仅尝试共享模型本身,还尝试共享场景项目。这将不起作用,因为没有任何场景项 如何修复它?使模型不知道任何GUI。每当发生有趣的事情时,让它发出changed()通知 然后,让每个SimScene将模型包装到它想要的QSceneItems中,并处理changed()通知 例如: 型号: 图表 边缘, 顶点
GUI 辛森, 基奇, QVertex, QSimInfo, Qbackground等等。。。
如果您只想在模型上显示一个交互式只读视图,可以使用一个QGraphicscene和两个QGraphicsView。只需对其中一个调用QGraphicsView::setInteractive(false)。这样,您就不必更改任何项目标志。如果您只想在模型上创建一个交互式只读视图,您可以使用一个QGraphicsCenter和两个QGraphicsView。只需对其中一个调用QGraphicsView::setInteractive(false)。这样,您就不必更改任何项目标志。此外,您还可以添加两次pScene2:
...
pView1->setScene(pScene2);
...
pView2->setScene(pScene2);
此外,还要添加两次pScene2:
...
pView1->setScene(pScene2);
...
pView2->setScene(pScene2);
你是对的。现有系统将模型项作为GUI项,这就是为什么在添加到第二个场景时,它们最终会从第一个场景中删除。我会试着把它们分开。谢谢,你说得对。现有系统将模型项作为GUI项,这就是为什么在添加到第二个场景时,它们最终会从第一个场景中删除。我会试着把它们分开。谢谢