QGraphicsView 中的交替场景
Alternate scenes in a 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();
}
能不能换个场景看?
想换场景就换,文档没有禁止,你可以换。
如果我不想显示任何场景或者每次都必须传递一个有效指针,通过 setScene 分配 nullptr 是否安全?
Qt 检查指针是否有效并相应地执行操作,因此可以安全地传递 nullptr 来删除之前的场景。
在 Qt 中,如果某些事情是危险的并且是不允许的,那么它会在文档中明确指出。查看源代码也很容易理解行为。
我有多个 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();
}
能不能换个场景看?
想换场景就换,文档没有禁止,你可以换。
如果我不想显示任何场景或者每次都必须传递一个有效指针,通过 setScene 分配 nullptr 是否安全?
Qt 检查指针是否有效并相应地执行操作,因此可以安全地传递 nullptr 来删除之前的场景。
在 Qt 中,如果某些事情是危险的并且是不允许的,那么它会在文档中明确指出。查看源代码也很容易理解行为。