一、介绍
采用了单例者模式,什么是单例者模式 ? 来源于24种设计模式之一,非常常用。我简单介绍: "其目标是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例"。通俗来讲就是 .h头文件放在哪里,那里就能调用它.h文件的方法,不需要创建对象。
.h文件
#pragma once
#include <QString>
#include <QMap>
#include <QVariantMap>
#include <QDateTime>
#include <Qdir>
class saveData : public QObject
{
Q_OBJECT
saveData(QObject* parent = nullptr);
public:
~saveData();
static saveData* Singleton();
/// <summary>
/// 保存QVariantMap数据到本地
/// </summary>
/// <param name="Path">文件路径 ,写绝对路径</param>
/// <param name="csvName">文件名.后缀( .csv 或者 .txt)</param>
/// <param name="Result">文件内容QVariantMap(键是文件头)</param>
/// <returns></returns>
bool SaveDataToLocal(QString Path, QString SaveName, QVariantMap Result);
};
.cpp文件
#include "saveData.h"
saveData::saveData(QObject* parent)
{
}
saveData::~saveData()
{
}
saveData* saveData::Singleton()
{
static saveData inst(nullptr);
return &inst;
}
bool saveData::SaveDataToLocal(QString Path, QString SaveName, QVariantMap Result )
{
try
{
QString FilePath = Path + "/" + SaveName;
QDir dir(Path);
if (!dir.exists())
{
dir.mkpath(Path);
}
QFile SaveFile(FilePath);
QFileInfo f(FilePath);
if (!f.isFile())
{
QString Title = "";
SaveFile.open(QIODevice::WriteOnly);
for (QString key: Result.keys())
{
Title += key + ",";
}
Title += "\r\n";
SaveFile.write(Title.toUtf8());
SaveFile.close();
}
SaveFile.open(QIODevice::WriteOnly | QIODevice::Append);
foreach(auto it, Result)
{
SaveFile.write((it.toString().toStdString() + ",").c_str());
}
SaveFile.write("\r\n");
SaveFile.close();
return true;
}
catch (const std::exception&)
{
return false;
}
}
二、使用方法
例如QTableWidget的数据可以添加到QVariantMap 再保存。u8 就是 UTF-8 可以中文表头。保存后缀可以 .TXT 或者 .CSV。
#include "saveData.h"
testRelease::testRelease(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
for (int i = 1; i <= 10; i++)
{
QVariantMap data; // 可以从QTableWidget 的数据调入进来
data[u8"学校"] = u8"广州商学院";
data[u8"学号"] = QString::number(i);
data[u8"姓名"] = u8"李"+QString::number(i);
data[u8"班级"] = u8"计算机科学与技术2001班";
saveData::Singleton()->SaveDataToLocal("d:/1", u8"学生信息.csv", data);
saveData::Singleton()->SaveDataToLocal("d:/1", u8"学生信息.txt", data);
}
}
三、使用结果
1.保存路径
2.保存.txt结果
3.保存.csv结果
三、通过按钮QTableWidget数据导出
QT C++ 的 QTableWidget数据导出-优快云博客文章浏览阅读2次。如果你开发的QT应用程序没有数据查询或者数据统计功能,可以使用此功能做导出数据可以让excel表格复杂的数据处理、数据查询。https://blog.youkuaiyun.com/qq_54122623/article/details/135731136
QT 数据导出