You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QGraphicsView切换多个QGraphicsScene及setScene传nullptr合法性咨询

QGraphicsView动态切换场景问题解答

1. 能否动态切换场景

完全可以。QGraphicsView::setScene 本身就被设计为支持运行时动态切换绑定的场景,没有限制只能绑定一次固定场景。
你给出的示例代码逻辑是成立的,只要保证所有QGraphicsScene对象的生命周期长于绑定的QGraphicsView即可,避免场景被提前销毁后视图访问野指针。你的示例中场景作为MyViewer的成员变量,和视图生命周期一致,符合安全要求。

2. 能否传入nullptr清空场景

可以安全传入nullptr。Qt官方对该接口的定义明确支持空指针参数,调用setScene(nullptr)后,视图会清空所有渲染内容,不再关联任何场景,不会出现崩溃、内存泄漏等异常问题,是官方推荐的临时清空视图显示的实现方式。

示例代码注意事项

你的示例代码存在一处笔误:成员变量命名为scenes[10],但update函数中调用时写的是&(scene[i]),少了末尾的s,修正后即可正常运行。

修正后的update函数参考:

void update(){
    if(i >= 10)
        i = 0;
    sc.setScene(&scenes[i]);
    i++;
}

内容的提问来源于stack exchange,提问作者desio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:48:01