1

如何使用QProcess将--message "text" 之类的参数解析为/usr/bin/gksudo以显示我的个性化文本?

只需使用/usr/bin/gksudo并调用我的script.sh 即可

这里是最小的例子:

QString cmd = QString("/usr/bin/gksudo");
QStringList param = ( QStringList << "--message my Text" << "path/to/script.sh")

QProcess.start( cmd, param );

即使我尝试将参数添加到cmd我也会失败。并且没有显示密码提示。

QString cmd = QString("/usr/bin/gksudo --message MyText");
4

2 回答 2

1

解决方案

--messagemy Text都是自己的元素。

QStringList param = ( QStringList << "--message" << tr("my Text") << "path/to/script.sh")
于 2014-02-21T09:18:22.413 回答
0

QProcess 将第一个参数作为要运行的命令,然后将以下由空格分隔的参数作为参数传递给命令。

当你这样做时: -

QStringList param = ( QStringList << "--message my Text" << "path/to/script.sh")

然后将参数传递给 QProcess,它将“path/to/script.sh”作为命令行参数传递给 gksudo,但您想要的是带有--message的单个参数。您需要用额外的引号统一参数。所以,在你的最后一个例子中,这将是: -

QString cmd = QString("/usr/bin/gksudo \"--message MyText"\");

注意--message MyText周围的两个附加\"

将此传递给 QProcess 意味着有两个参数;对gksudo的调用及其命令行参数“ --message MyText

于 2014-02-21T09:27:41.100 回答