先上ui图
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_pushButton_clicked(); //插入行
void on_pushButton_2_clicked(); //删除行
void on_pushButton_3_clicked(); //导入ini文件
void on_pushButton_4_clicked(); //导出ini文件
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QFileInfo>
#include <QSettings>
#include <QTextCodec>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
int currentRow = ui->tableWidget->currentRow();
ui->tableWidget->insertRow(currentRow+1);
}
void Widget::on_pushButton_2_clicked()
{
int row =ui->tableWidget->currentRow();
ui->tableWidget->removeRow(row);
}
void Widget::on_pushButton_3_clicked()
{
int currentRow;
int currentCoumn;
QString itemName;
QString itemCourse;
QString itemTime;
QString itemRead;
QSettings *config = new QSettings("I:/teacher.ini", QSettings::IniFormat);
config->setIniCodec(QTextCodec::codecForName("utf-8"));
//不知道文件里有多少个section 假设最多有20个section
for(int i = 0; i < 20; i++)
{
QString section = QString("teacher%1/").arg(i);
if(config->value(section + "name").toString().isEmpty())
{
//break; //可能有空值(有section 无value)
continue;
}
ui->tableWidget->insertRow(i);
currentRow = i;
currentCoumn = 0;
itemName = config->value(section + "name").toString();
ui->tableWidget->setItem(currentRow, currentCoumn,
new QTableWidgetItem(itemName));
itemCourse = config->value(section + "course").toString(); //key 得到value
currentCoumn = 1;
ui->tableWidget->setItem(currentRow, currentCoumn,
new QTableWidgetItem(itemCourse));
itemTime = config->value(section + "time").toString(); //key 得到value
currentCoumn = 2;
ui->tableWidget->setItem(currentRow, currentCoumn,
new QTableWidgetItem(itemTime));
itemRead = config->value(section + "read").toString(); //key 得到value
currentCoumn = 3;
ui->tableWidget->setItem(currentRow, currentCoumn,
new QTableWidgetItem(itemRead));
qDebug()<<section;
}
ui->lineEdit->setText("导入成功");
delete config;
}
void Widget::on_pushButton_4_clicked()
{
QFileInfo iniFileInfo;
// iniFileInfo = QFileInfo("teacher.ini");
QSettings *config = new QSettings("I:/qtproject/teacher.ini", QSettings::IniFormat);
config->setIniCodec(QTextCodec::codecForName("utf-8"));
for(int i = 0; i < ui->tableWidget->rowCount(); i++)
{
QString section = QString("teacher%1/").arg(i);
config->beginGroup(section);
config->setValue("name", ui->tableWidget->item(i, 0)->text());
config->setValue("course", ui->tableWidget->item(i, 1)->text());
config->setValue("time", ui->tableWidget->item(i, 2)->text());
config->setValue("read", ui->tableWidget->item(i, 3)->text());
config->endGroup();
}
ui->lineEdit->setText("导出成功");
delete config;
}