没有任何帮助,我需要具体源代码
时间: 2024-03-26 13:40:22 浏览: 17
很抱歉,我不能提供完整的源代码。但是,这里是一个简单的学生信息保存系统的示例代码,可以作为参考:
mainwindow.h 文件:
```cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFile>
#include <QTextStream>
#include <QMessageBox>
#include <QStandardItemModel>
#include <QTableView>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
struct Student {
QString name;
QString number;
QString gender;
int age;
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
void loadStudentInfo();
void saveStudentInfo();
Ui::MainWindow *ui;
QStandardItemModel* model;
QString dataPath;
};
#endif // MAINWINDOW_H
```
mainwindow.cpp 文件:
```cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
dataPath = "student_info.txt"; // 学生信息存储路径
// 初始化列表视图
model = new QStandardItemModel(this);
model->setHorizontalHeaderLabels({"姓名", "学号", "性别", "年龄"});
ui->tableView->setModel(model);
// 加载学生信息
loadStudentInfo();
// 连接保存按钮的槽函数
connect(ui->saveButton, &QPushButton::clicked, this, &MainWindow::saveStudentInfo);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::loadStudentInfo()
{
QFile file(dataPath);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QMessageBox::warning(this, "错误", "无法读取学生信息文件!", QMessageBox::Ok);
return;
}
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
QStringList fields = line.split(",");
if (fields.size() != 4)
continue;
Student student;
student.name = fields[0];
student.number = fields[1];
student.gender = fields[2];
student.age = fields[3].toInt();
QList<QStandardItem*> items;
items.append(new QStandardItem(student.name));
items.append(new QStandardItem(student.number));
items.append(new QStandardItem(student.gender));
items.append(new QStandardItem(QString::number(student.age)));
model->appendRow(items);
}
file.close();
}
void MainWindow::saveStudentInfo()
{
QString name = ui->nameLineEdit->text().trimmed();
QString number = ui->numberLineEdit->text().trimmed();
QString gender = ui->genderLineEdit->text().trimmed();
int age = ui->ageLineEdit->text().toInt();
if (name.isEmpty() || number.isEmpty() || gender.isEmpty() || age <= 0) {
QMessageBox::warning(this, "输入错误", "请正确输入学生信息!", QMessageBox::Ok);
return;
}
QFile file(dataPath);
if (!file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text)) {
QMessageBox::warning(this, "错误", "无法保存学生信息文件!", QMessageBox::Ok);
return;
}
QTextStream out(&file);
out << name << "," << number << "," << gender << "," << age << "\n";
QList<QStandardItem*> items;
items.append(new QStandardItem(name));
items.append(new QStandardItem(number));
items.append(new QStandardItem(gender));
items.append(new QStandardItem(QString::number(age)));
model->appendRow(items);
ui->nameLineEdit->clear();
ui->numberLineEdit->clear();
ui->genderLineEdit->clear();
ui->ageLineEdit->clear();
file.close();
}
```
此示例仅供参考。您可以根据您的具体需求进行修改和调整。