对上两篇篇的工作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("成绩表格已成功保存。"));
});