QT中调用外部程序:QProcess的使用

来源:互联网 发布:哈尔滨红肠 知乎 编辑:程序博客网 时间:2024/05/21 16:54

运行:ipconfig

运行:ping www.baidu.com

程序共包含以下有一个文件:

  1. //: main.cpp   
  2. #include "process.h"   
  3. #include <QApplication>   
  4. #include <QTextCodec>   
  5. int main(int argc, char *argv[])   
  6. {   
  7.      QApplication a(argc, argv);   
  8.      QTextCodec::setCodecForTr(QTextCodec::codecForLocale());   
  9.      QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());   
  10.      Process w;   
  11.      w.show();   
  12.     return a.exec();   
  13. }  
  1. //: process.h   
  2. #ifndef PROCESS_H   
  3. #define PROCESS_H   
  4. #include <QWidget>   
  5. class QLabel;   
  6. class QLineEdit;   
  7. class QProcess;   
  8. class QPushButton;   
  9. class QTextEdit;   
  10. class Process : public QWidget   
  11. {   
  12.      Q_OBJECT   
  13. public:   
  14.      Process(QWidget *parent = 0, <b style="color:black;background-color:#ffff66">Qt</b>::WFlags flags = 0);   
  15.      ~Process();   
  16. private slots:   
  17.     void runClicked();   
  18.     void readOutput();   
  19. private:   
  20.      QProcess* cmd;   
  21.      QString output;       //用于保存输出结果
  22.      QLabel* inputLabel;   
  23.      QLineEdit* inputEdit;   
  24.      QPushButton* runButton;   
  25.      QLabel* outputLabel;   
  26.      QTextEdit* outputEdit;   
  27. };   
  28. #endif // PROCESS_H  

  1. //: process.cpp   
  2. #include <QtGui>   
  3. #include "process.h"   
  4. Process::Process(QWidget *parent, <b style="color:black;background-color:#ffff66">Qt</b>::WFlags flags)   
  5.      : QWidget(parent, flags)   
  6. {   
  7.      inputLabel = new QLabel(tr("请输入命令:"));   
  8.      inputEdit = new QLineEdit;   
  9.      runButton = new QPushButton(tr("运行"));   
  10.      outputLabel = new QLabel(tr("运行结果如下:"));   
  11.      outputEdit = new QTextEdit;   
  12.      outputEdit->setReadOnly(true);   
  13.      QHBoxLayout* hlayout = new QHBoxLayout;   
  14.      hlayout->addWidget(inputEdit);   
  15.      hlayout->addWidget(runButton);   
  16.      QVBoxLayout* layout = new QVBoxLayout;   
  17.      layout->addWidget(inputLabel);   
  18.      layout->addLayout(hlayout);   
  19.      layout->addWidget(outputLabel);   
  20.      layout->addWidget(outputEdit);   
  21.      setLayout(layout);   
  22.        
  23.      cmd = new QProcess;   
  24.      connect(inputEdit, SIGNAL(returnPressed()), this, SLOT(runClicked()));   
  25.      connect(runButton, SIGNAL(clicked(bool)), this, SLOT(runClicked()));   
  26.      connect(cmd, SIGNAL(readyRead()), this, SLOT(readOutput()));   
  27.      resize(500, 300);   
  28. }   
  29. Process::~Process()   
  30. {   
  31. }   
  32. void Process::runClicked()   
  33. {   
  34.      QString input = inputEdit->text();    //输入指令
  35.      cmd->start(input);   
  36.      output = tr("");   
  37.      outputEdit->setText(output);   
  38. }   
  39. void Process::readOutput()   
  40. {   
  41.      output += cmd->readAll();   
  42.      outputEdit->setText(output);   
  43. }  
原创粉丝点击