Qt。在 QProcess 中复制资源文件

Posted

技术标签:

【中文标题】Qt。在 QProcess 中复制资源文件【英文标题】:Qt. Copy resource file in QProcess 【发布时间】:2020-06-06 08:45:22 【问题描述】:

我正在尝试复制已附加到程序中的文件,例如 /usr/share/postgresql/10/extension/ 中的资源(需要 sudo 权限)

如果目标路径在 /home 中,我可以这样做:

QFile file(QStringLiteral(":/resourcefile"));
if(file.open(QIODevice::ReadOnly))

    file.copy("/home/user/......./resourcefile");

但这不是我的情况。因此我必须在this way 中使用QProcess(我认为):

QProcess process1, process2;

process1.setStandardOutputProcess(&process2);
process1.start("echo mypass");
process2.start("sudo -S cp <resourcefile> /usr/share/postgresql/10/extension/file.sql");
process2.setProcessChannelMode(QProcess::ForwardedChannels);
bool retval = false;
QByteArray buffer;
while ((retval = process2.waitForFinished()));
    buffer.append(process2.readAll());
.....

问题是....我怎样才能将&lt;resourcefile&gt; 传递给 process2?

【问题讨论】:

【参考方案1】:

使用这个方法:

QProcess::setArguments(const QStringList &arguments)
QProcess::setNativeArguments(const QString &arguments)
QProcess::setStandardInputFile(const QString &fileName)
QProcess::setStandardOutputFile(const QString &fileName, QIODevice::OpenMode mode = Truncate)

看看这个:https://doc.qt.io/qt-5/qprocess.html

【讨论】:

谢谢,但我无能为力。我真正的问题是“资源文件”不是 bash 可以使用的物理文件。我去编辑问题以澄清

以上是关于Qt。在 QProcess 中复制资源文件的主要内容,如果未能解决你的问题,请参考以下文章

QT读取文本文件

使用 QProcess 在 Qt 中运行外部可执行文件

运行 jar 文件使用 Qt (QProcess)

使用 QProcess 在 Qt(C++) 中使用 WinRar 解压缩 - 提取目录问题

Qt Creator 中没有资源文件

Qt 资源文件利用率