在Qt中使用系统命令

时间:2012-05-29 12:12:37

标签: qt

如何在QString中使用system命令编写命令?

像:

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*)’

有人可以提出建议吗?

6 个答案:

答案 0 :(得分:12)

使用qPrintable()

system(qPrintable(command));

答案 1 :(得分:7)

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

system(command.toStdString().c_str());

答案 2 :(得分:7)

Ankur Gupta写道,使用QProcess静态函数(link to description):

int QProcess::execute ( const QString & program )

在你的情况下:

QProcess::execute ("chmod -R 777 /opt/QT/examples/code/TestGUI/Data");

答案 3 :(得分:6)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

您可以将QString转换为const char*

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

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

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

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

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