Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 以相同数量拖动不同QGraphicsCenes中的多个QGraphicsSite_Qt_Qgraphicsview_Qgraphicsitem_Qgraphicsscene - Fatal编程技术网

Qt 以相同数量拖动不同QGraphicsCenes中的多个QGraphicsSite

Qt 以相同数量拖动不同QGraphicsCenes中的多个QGraphicsSite,qt,qgraphicsview,qgraphicsitem,qgraphicsscene,Qt,Qgraphicsview,Qgraphicsitem,Qgraphicsscene,我有自己的类(mygraphicscene、MyGraphicsView、MyGraphicsItem),它们是从qgraphicscene、QGraphicsView和QGraphicsItem派生的 在我的主窗口中,我创建了九(9)个MyGraphicscene实例,如MyGraphicsView的九个实例所示。所有九个MyGraphicsCenes都包含指向彼此的指针 如何在一个MyGraphicscene中拖动MyGraphicsSitem实例,然后以相同的数量/距离/向量自动拖动某些M

我有自己的类(mygraphicscene、MyGraphicsView、MyGraphicsItem),它们是从qgraphicscene、QGraphicsView和QGraphicsItem派生的

在我的主窗口中,我创建了九(9)个MyGraphicscene实例,如MyGraphicsView的九个实例所示。所有九个MyGraphicsCenes都包含指向彼此的指针

如何在一个MyGraphicscene中拖动MyGraphicsSitem实例,然后以相同的数量/距离/向量自动拖动某些MyGraphicsSitem实例(在其余八个MyGraphicscene中)

我的第一个想法是重新实现MyGraphicsItem::itemChange(change==QGraphicsItem::ItemPositionChange),然后为MyGraphicsItem的其余实例(包含在其他mygraphicscene中)调用setPos()。但是,这将不起作用,因为我将得到无限递归(setPos()也将触发itemChange(),包括原始MyGraphicsItem)


如果您为QGraphicsItem定义派生类(我想您已经有了,对吧?)并重新实现
mouseMoveEvent
,那么它会对所有9个对象调用move方法,那么有经验的Qt开发者还有其他想法吗?

请记住,您可以使用
QMouseEvent
的所有属性,例如
按钮()
pos()


希望有帮助

如果您为QGraphicsItem定义派生类(我想您已经有了,对吧?),并重新实现
mouseMoveEvent
,那么它会对所有9个对象调用move方法

请记住,您可以使用
QMouseEvent
的所有属性,例如
按钮()
pos()


希望有帮助

我确实知道,您可以在多个视图中使用相同的
qgraphicscene
。因此,如果您只是想对同一事物拥有多个视图,请在同一场景中调用
MyGraphicsView

我确实知道,您可以在多个视图中使用相同的
qgraphicscene
。因此,如果您只是想对同一事物拥有多个视图,请使用同一场景调用
MyGraphicsView

void MyGraphicsItem::mouseMoveEvent( QMouseEvent *event )
{
  if (event->buttons() & Qt::LeftButton) {
    QPoint pos = event->pos();
    // ...
  }
}