一个QGraphicsView对象对两个QGraphicsScene对象
Solved
Chinese
-
QGraphicsView *view;
QGraphicsScene *scene1;
QGraphicsScene *scene2;两个场景都有一些可以重复运动的图元,还有三个按钮,【开始运动】,【暂停/继续运动】,【重新开始】。
现在view->setScene(scene1),点击按钮【开始运动】,图元开始运动,如果接着再把该view改为setScene(scene2)的话,那scene1的那些还在运动的图元会怎么样,暂停,还是结果未知。我试了下,是暂停,但是这里边具体会发生什么我也不懂,求指教。
-
@Limer 您好,欢迎。
恭喜,你的方法是正确的,得到的结果也是正确的。
setScene
的过程中,伪代码如下:void setScene(QGraphicsScene *scene) { /** some code */ if(d->scene == scene){ ///< if has same scene, just return return; } if(d->scene){ /** if has old scene */ ///< disconnect scene changed signal ///< disconnect scene sceneRectChanged signal /** Note: will send Deactivate(停用) to scene */ if (isActiveWindow() && isVisible()) { QEvent windowDeactivate(QEvent::WindowDeactivate); QApplication::sendEvent(d->scene, &windowDeactivate); } if(hasFocus()){ d->scene->clearFocus(); } } /** some code */ }