QGraphicsView中的备用场景



我有多个QGraphicsScene对象,应该在不同的时间绘制到单个QGraphicsView中。

一旦我通过setScene成员函数分配了一个场景给视图,就有可能改变另一个观看的场景?

如果我不想显示任何场景,或者我每次都必须传递一个有效的指针,那么通过setScene分配nullptr是否安全?

class MyViewer : public QObject{
Q_OBJECT
QGraphicsView sc;
QGraphicsScene scenes[10];
int i;
public:
//....
QGraphicsView *getView() { return ≻}
//called by a QTime event for example
void update(){
if(i >= 10)
i = 0;
sc.setScene(&(scene[i]));
i++;
}
};
int main(int n, const char **a){
QApplication app(n, a);
MyViewer vw;
/*
* Do some stuffs, initialize and connect a QTimer
*/
vw.getView()->show();
app.exec();
}

可以用另一个更改查看的场景?

您可以随时更改场景,文档中没有指明禁止,因此您可以这样做。

是否安全分配nullptr通过setScene,如果我不想显示任何场景,或者我必须通过一个有效的指针每次?

Qt检查指针是否有效,并相应地执行操作,因此通过nullptr来删除之前的场景是安全的。


在Qt中,当某些东西是危险的并且不允许的,那么它将在文档中明确指出。也很容易看到源代码来理解行为。