2017-05-02 5 views
1

I eine App erstellen, die Linux-Befehl über C++ Qt GUI I aus der Datei gelesen auszuführen und die Ausgabe normalerweise zeigen aber manchmal die Ausgabe von Datei-Daten = „“ und der Ausgang, - in normaler Show in Terminal - Show in Application Ausgabe so mag ich eine Anwendung Ausgabe erhalten, um zu QWidget wie QTextEditHolen qt Anwendungsausgabe QWidget C++

wie
Katze ::/home/user/Desktop: Ist Anzeige Verzeichnis, die Funktion Ich benutzte es ist

QString operation :: commands(std::string usercommand){ 
const char * convertor = userCommand.c_str(); 
string data; 
FILE *f =popen(convertor,"r"); 
char buffer [1024]; 
while (fgets(buffer,sizeof(buffer)-1,f)!=NULL){data=data+buffer;} 
pclose(f); 
QString returning = QString::fromStdString(data); return returning; } 
+1

Ich würde verwenden 'QProcess' statt dessen. – drescherjm

Antwort

1

Wenn Sie mit Qt arbeiten sollten Sie QProcess

QString operation::commands(QString program) 
{  
    QProcess process; 
    process.start(program); 
    while (process.waitForFinished()){ 
     ; 
    } 
    QString resp = QString::fromLocal8Bit(process.readAllStandardOutput()); 
    QString error = QString::fromLocal8Bit(process.readAllStandardError()); 
    return resp + error; 
} 

Nutzung Verwendung:

QString usercommand = "cat /home/user/Desktop"; 
commands(usercommand); 
+0

Was sollte der QString-Programmparameter sein? –

+0

update meine Lösung – eyllanesc

+0

danke viel^_^ –