2017-05-02 31 views
1

我建立通过C++ Qt的GUI 执行Linux命令的应用程序我从文件中读取并显示输出常 但有时从文件输出数据=“” 和输出该 - 在终端正常显示 - 显示在应用程序的输出 所以 我希望得到一个应用程序输出到如的QTextEdit QWidget的获取Qt应用程序输出到QWidget的C++


猫::/home/user中/桌面:是广告目录, 功能我用它是

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

我会用的'QProcess'而不是这个。 – drescherjm

回答

1

如果您在使用Qt工作,你应该使用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; 
} 

用途:

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

什么是QString程序参数应该是什么? –

+0

更新我的解决方案 – eyllanesc

+0

非常感谢^ _^ –

相关问题