C++ Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(3) 保存表格数据

对上两篇篇的工作C++ Qt框架开发| 基于Qt框架开发实时成绩显示排序系统(1)-CSDN博客C++ Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(2)折线图显示-CSDN博客继续优化,增加一个保存按钮,用于保存成绩数据。

1)在ui界面添加一个按钮

将其命名为saveBtn。

2)在mainwindow.cpp中添加如下槽函数
cpp 复制代码
    QAction* sBtn = new QAction("保存");
    ui->saveBtn->setDefaultAction(sBtn);
    connect(ui->saveBtn, &QToolButton::triggered, this, [=]() {
        // 弹出保存文件对话框
        QString filePath = QFileDialog::getSaveFileName(this, tr("保存成绩"), "", tr("CSV文件 (*.csv)"));
        if (filePath.isEmpty()) return; // 用户取消操作

        QFile file(filePath);
        if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
            QMessageBox::warning(this, tr("保存失败"), tr("无法打开文件进行写入"));
            return;
        }

        QTextStream out(&file);

        // 写入标题行
        QStringList headers;
        for (int column = 0; column < proxyModel->columnCount(); ++column) {
            headers << proxyModel->headerData(column, Qt::Horizontal).toString();
        }
        out << headers.join(",") + "\n";

        // 写入数据行
        for (int row = 0; row < proxyModel->rowCount(); ++row) {
            QStringList rowItems;
            for (int column = 0; column < proxyModel->columnCount(); ++column) {
                QModelIndex index = proxyModel->index(row, column);
                rowItems << proxyModel->data(index).toString();
            }
            out << rowItems.join(",") + "\n";
        }

        file.close(); // 关闭文件
        QMessageBox::information(this, tr("保存成功"), tr("成绩表格已成功保存。"));
    });
相关推荐
无尽的大道7 分钟前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化
爱吃生蚝的于勒11 分钟前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
羊小猪~~14 分钟前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
binishuaio20 分钟前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
zz.YE22 分钟前
【Java SE】StringBuffer
java·开发语言
就是有点傻26 分钟前
WPF中的依赖属性
开发语言·wpf
洋24034 分钟前
C语言常用标准库函数
c语言·开发语言
进击的六角龙36 分钟前
Python中处理Excel的基本概念(如工作簿、工作表等)
开发语言·python·excel
wrx繁星点点37 分钟前
状态模式(State Pattern)详解
java·开发语言·ui·设计模式·状态模式
NoneCoder1 小时前
Java企业级开发系列(1)
java·开发语言·spring·团队开发·开发