2012-05-29 21 views
5

¿Cómo puedo usar el comando system donde el comando está escrito en un QString?Usando el comando del sistema en Qt

igual:

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

Durante la compilación, me sale este error:

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

¿Puede alguien sugerir algo?

+1

posible duplicado de [conversión de QString a char] (http://stackoverflow.com/questions/2523765/qstring-to-char-conversion) – Mat

Respuesta

7

Necesita obtener la matriz de caracteres sin procesar de QString. Aquí está una manera:

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

Utilice la qPrintable() macro

system(qPrintable(command));

+0

¡Hola, gracias! No sabía sobre 'qPrintable'. Uno aprende algo todos los días. –

6

Ankur Gupta escribió, utilice la función QProcess estática (link to description):

int QProcess::execute (const QString & program) 

en su situación:

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

Para cambiar el permiso, puede usar setPermissions de QFile

0

puede convertir QString en const char*.

si su cadena está en UTF8, entonces usted puede utilizar:

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

más si la cadena no está en UTF8, entonces usted puede utilizar:

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

en este caso segundo es Lo que quieras.

Cuestiones relacionadas