c++ - QT - 将文件复制到 AppData

标签 c++ qt qfile qdir

我的程序提示用户选择要处理的文件。我的程序处理它并尝试将文件保存到 AppData。

我是这样做的:

QSettings settings(QSettings::IniFormat, QSettings::UserScope, "FlameTool", "FlameTool");
addin_path = QFileInfo(settings.fileName()).absolutePath() + "/addins/" + id + ".limod" ;
qDebug(addin_path.toLocal8Bit());

if(QFile::copy(QDir::toNativeSeparators(file_passed),QDir::toNativeSeparators(addin_path)))
    qDebug("copied");
else
    qDebug("not copied");

每次执行这部分代码时,都会输出“未复制”。 如何复制文件?

最佳答案

为了做你想做的事,我想建议改用 QStandardPaths 类:

设置应用程序名称,例如main.cpp

int main(...)
{
    [..]
    a.setApplicationName("FlameTool");
}

复制文件:

QString addin_path = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
QDir dir(addin_path);
if (!dir.exists())
    dir.mkpath(addin_path);
if (!dir.exists("addins"))
    dir.mkdir("addins");

dir.cd("addins");
addin_path = dir.absoluteFilePath(id + ".limod");
if (QFile::exists(addin_path))
    QFile::remove(addin_path);

if(QFile::copy(file_passed, addin_path))
    qDebug("copied");
else
    qDebug("not copied");

另请注意:

Note that if a file with the name newName already exists, copy() returns false (i.e. QFile will not overwrite it).

关于c++ - QT - 将文件复制到 AppData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22305719/

相关文章:

c++ - 为什么 `is_­destructible` 使用 `declval<U&>().~U()` 而不是 `declval<U>().~U()` 定义?

c++ - 操作中的整数溢出

c++ - 如何反转 QSlider 的范围

c++ - 创建 QGradient

qt - 如何在我处理之前报告进度而不浏览整个文件

c# - 如何在WinCE中通过C# DllImport创建win32 smartpone dll并调用

c++ - 将 Jenkins CI 用于 Qt 项目

python - PyQt 中的 os.walk 模拟

c++ - 如何在Qt中映射资源文件?

c++ - 如何从 HTML 页面获取字符集