5

如何使用system以 QString 编写命令的命令?

喜欢:

QString command="chmod -R 777 /opt/QT/examples/code/TestGUI/Data";    
system(command);

编译时,我收到此错误:

cannot convert ‘QString’ to ‘const char*’
  for argument ‘1’ to ‘int system(const char*)’

任何人都可以提出一些建议吗?

4

6 回答 6

12

使用qPrintable()

system(qPrintable(command));

于 2012-05-29T12:52:13.580 回答
7

您需要从 QString 中获取原始字符数组。这是一种方法:

system(command.toStdString().c_str());
于 2012-05-29T12:21:14.527 回答
7

Ankur Gupta 写道,使用 QProcess 静态函数(链接到描述):

int QProcess::execute ( const QString & program )

在你的情况下:

QProcess::execute ("chmod -R 777 /opt/QT/examples/code/TestGUI/Data");
于 2012-05-29T13:04:03.930 回答
6

QProcess 类http://doc.qt.io/qt-5/qprocess.html。这是你需要的。

于 2012-05-29T12:16:41.833 回答
0

要更改权限,您可以使用 QFile 的 setPermissions

于 2012-09-13T14:07:09.513 回答
0

您可以转换QStringconst char*.

如果您的字符串是 UTF8,那么您可以使用:

const char* my_command = command.toUtf8().constData() ;
system(my_command);

否则,如果您的字符串不是 UTF8,那么您可以使用:

command.toLatin1().constData() ;
system(my_command);

在这种情况下,第二个就是你想要的。

于 2013-11-15T09:05:42.473 回答