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

Qt C++学生成绩单软件:切换学年后表格内容不更新求助

问题原因与修复方案

核心问题:每次切换学年都新建QTextBrowser

你在displayTable函数里每次调用都会创建新的QTextBrowser控件,新控件和旧控件位置完全重合,会直接叠加在旧控件上方,导致旧数据的控件始终显示在最上层,看起来像是数据没更新。

修复步骤:

  1. 复用同一个QTextBrowser控件

    • 在你的ms类头文件中添加成员变量声明:QTextBrowser* m_textBrowser;
    • 在构造函数中初始化一次,后续不再新建:
      ms::ms(QWidget *parent) :
          QDialog(parent),
          ui(new Ui::ms),
          m_textBrowser(new QTextBrowser(this))
      {
          ui->setupUi(this);
          m_textBrowser->setGeometry(10, 10, 1450, 600);
          displayTable("1");
      
          // ... 填充ComboBox的原有代码
      }
      
    • 删除displayTable里QTextBrowser* textBrowser = new QTextBrowser(this);这行,把函数内所有textBrowser替换为m_textBrowser。
  2. 修正SQL查询的参数绑定(避免注入+确保查询准确性)
    原代码直接拼接SQL字符串,存在安全风险且可能因格式问题导致查询失效,改为参数绑定方式:

    query.prepare("SELECT * FROM subj WHERE stg = :st");
    query.bindValue(":st", st);
    if (!query.exec()) {
        ui->lblmessage->setText("Error: " + query.lastError().text());
    }
    
  3. 移除函数内重复获取学年参数的代码
    displayTable已经通过参数接收了目标学年st,无需再从ComboBox读取,删掉这行:

    // 删掉:QString st = ui->cmbxstage->currentText();
    
  4. 调整HTML构建逻辑
    把CSS样式放在<table>标签之前,确保样式生效,并且只在所有内容构建完成后设置一次Html:

    QString tableContent;
    // 先加样式
    QString cssStyle = "<style>/* 你的样式配置 */</style>";
    tableContent.append(cssStyle);
    // 再加表格标签
    tableContent.append("<table align='left' border='1' cellspacing='0' width='350%' cellpadding='0'>");
    
    // ... 构建表格头部、内容的原有代码
    
    // 最后闭合表格并设置Html
    tableContent.append("</table>");
    m_textBrowser->setHtml(tableContent);
    
  5. 临时应急方案(无需修改头文件)
    如果暂时不想调整类成员变量,可以在新建QTextBrowser前删除旧控件:

    // 在displayTable函数开头添加:
    QTextBrowser* oldBrowser = findChild<QTextBrowser*>();
    if (oldBrowser) {
        delete oldBrowser;
    }
    // 再创建新的QTextBrowser
    

额外优化建议

  • 避免在循环中频繁创建QSqlQuery对象,可复用查询对象提升性能
  • 调试时输出SQL错误详情(比如query.lastError().text()),快速定位查询问题
  • 处理float wave = sumM6/tunit;中除数tunit为0的情况,避免程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:27:06