C++Qt5.9版本,代码实现同时保存dat格式文件和txt格式文件在同一个路径中,该路径只选择一次。
时间: 2024-10-19 12:08:41 浏览: 25
在C++中,特别是在使用Qt5.9版本时,你可以利用Qt提供的QFile和QDataStream类来实现数据的保存。假设你想将一些数据同时保存到.dat和.txt格式的文件中,可以按照以下步骤操作:
```cpp
#include <QObject>
#include <QtWidgets/QFileDialog>
#include <QFile>
#include <QDataStream>
class SaveData : public QObject
{
Q_OBJECT
public slots:
void saveData()
{
QString filePath = QFileDialog::getSaveFileName(nullptr,
tr("Save File"), // 文件保存对话框标题
QDir::currentPath(), // 默认路径
tr("Dat (*.dat);;Text (*.txt)") // 可供选择的文件类型
);
if (!filePath.isEmpty()) { // 如果用户选择了文件
QFile datFile(filePath + ".dat"); // .dat文件路径
QFile txtFile(filePath + ".txt"); // .txt文件路径
if (datFile.open(QIODevice::WriteOnly | QIODevice::Text)) { // 打开文件并设置为写入模式
QDataStream out(&datFile);
// 将你要保存的数据序列化到流中,例如:
out << "Your Data"; // 这里替换为实际数据
out.device()->flush(); // 确保数据已写入
datFile.close();
if (txtFile.open(QIODevice::WriteOnly)) { // 对于文本文件
QTextStream textOut(&txtFile);
textOut << "Data in Text Format:\n" << "Your Data"; // 写入文本格式数据
txtFile.close();
}
} else {
qDebug() << "Failed to open file!";
}
}
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
SaveData *saveObj = new SaveData;
connect(saveObj, &SaveData::saveData, &app, &QApplication::quit); // 点击按钮触发保存
return app.exec();
}
```
在这个例子中,`saveData`槽函数首先通过`QFileDialog`获取用户的文件保存路径,然后创建`.dat`和`.txt`文件,并尝试打开它们进行写入。注意,你需要根据你的具体数据结构修改数据序列化的部分。
阅读全文