osX - 如何从我的QT应用程序启动另一个程序

时间:2017-06-17 13:12:30

标签: c++ macos qt

我正在尝试从我的QT应用程序运行iBooks。 我尝试了QProcess :: execute()和QProcess :: start(),但没有一个工作。

QString program ="/Users/muhammed/Applications/iBooks.dmg";
QStringList arguments;
QProcess *q=new QProcess(this);
q->start(program,(QStringList) arguments<<"/Users/muhammed/Applications/iBooks.dmg");

使用此代码时没有任何反应。请帮忙。

1 个答案:

答案 0 :(得分:0)

您无法直接运行.dmg文件。您需要将.dmg文件路径传递给open命令,如下所示:

$ open application.dmg

因此,您的Qt代码看起来像QProcess::execute静态方法:

QProcess::execute( "open", { "your-dmg-file-path-here" } );

或者,

const QString dmgPathArg { "your-dmg-file-path-here" };

QProcess process {};
process.start( "open", { dmgPathArg } );

if ( !process.waitForFinished( -1 ) )
{
    qDebug() << process.readAllStandardError();
    return;
}

qDebug() << process.readAllStandardOutput();

实际上,您可以使用readAllStandardError()readAllStandardOutput()方法看到一些错误字符串。

查看QProcess的文档。它有一些非常好的例子。

希望有所帮助。