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

如何在QStackedWidget中显示QChartView并解决图表弹出独立窗口问题

问题根源

你代码中对ui->graphicsView的重新赋值操作是核心问题:UI文件生成时已经根据你在Qt Designer中的设置,实例化了提升后的QChartView对象,并且已经挂载到QStackedWidget对应页面的布局中。你执行ui->graphicsView = new QChartView(chart);时,覆盖了原有的控件指针,新创建的QChartView没有父容器,也没有加入到Form的布局树中,调用show()时自然会作为独立窗口弹出;删除show()后这个没有挂载的控件自然不可见,而原本的旧控件也没有关联你新创建的图表对象,所以也不会显示内容,同时还会产生内存泄漏。

修正方案

直接修改processStudioStats()函数末尾的错误代码即可:

替换前的错误代码

ui->graphicsView  = new QChartView(chart);
ui->graphicsView->show();

替换后的正确代码

// 直接给设计师提前创建好的QChartView设置图表即可,无需重新实例化
ui->graphicsView->setChart(chart);
// 可选:开启抗锯齿优化图表显示效果
ui->graphicsView->setRenderHint(QPainter::Antialiasing);

补充说明

  1. 无需额外调用子控件的show()方法,你调用pForm->show()时,Form内部布局挂载的所有子控件会自动显示。
  2. 如果要给QStackedWidget的第二个页面也添加图表,只需要在Qt Designer中给第二个页面也放置一个提升为QChartView的QGraphicsView,按照同样的逻辑调用setChart()设置对应图表即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:00:03