2012-05-29 10 views
5

Come è possibile utilizzare il comando system in cui il comando è scritto in un QString?Utilizzo del comando di sistema in Qt

come:

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

Durante la compilazione, ottengo questo errore:

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

Qualcuno può suggerire qualcosa?

+1

possibile duplicato di [Conversione QString in char] (http://stackoverflow.com/questions/2523765/qstring-to-char-conversion) – Mat

risposta

7

È necessario ottenere la matrice di caratteri non elaborata da QString. Ecco un modo:

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

Utilizzare la qPrintable() macro

system(qPrintable(command));

+0

Ehi, grazie! Non sapevo di 'qPrintable'. Si impara qualcosa ogni giorno. –

6

Ankur Gupta ha scritto, utilizzare la funzione QProcess statico (link to description):

int QProcess::execute (const QString & program) 

per l'utente:

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

Per modificare l'autorizzazione è possibile utilizzare setPermissions di QFile

0

è possibile convertire QString in const char*.

se la stringa è in UTF8, quindi è possibile utilizzare:

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

altro, se la stringa non è in UTF8, quindi è possibile utilizzare:

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

in questo caso secondo è ciò che vuoi.

Problemi correlati