赞
踩
第一种方式的链接如下:
https://mp.csdn.net/postedit/84067805
第一种方式是重定向到文件,然后读取,
第二种方式不重定向到文件,直接读取!
利用QProcess的特点
运行截图如下:
源码如下:
widget.h
- #ifndef WIDGET_H
- #define WIDGET_H
-
- #include <QWidget>
-
- QT_BEGIN_NAMESPACE
- class QProcess;
- QT_END_NAMESPACE
-
- namespace Ui {
- class Widget;
- }
-
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- explicit Widget(QWidget *parent = 0);
- ~Widget();
-
- protected:
- void callTopShell();
- void initListWidget();
-
- protected slots:
- void readProcess();
- void processFinished();
-
- private:
- Ui::Widget *ui;
- QProcess *m_topProcess;
- };
-
- #endif // WIDGET_H
widget.cpp
- #include "widget.h"
- #include "ui_widget.h"
-
- #include <QProcess>
- #include <QEventLoop>
- #include <QTimer>
- #include <QDebug>
-
-
- Widget::Widget(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Widget)
- {
- ui->setupUi(this);
- m_topProcess = new QProcess;
- callTopShell();
- connect(m_topProcess, SIGNAL(readyRead()), this, SLOT(readProcess()));
- connect(m_topProcess, SIGNAL(finished(int,QProcess::ExitStatus)),this, SLOT(processFinished()));
- initListWidget();
- }
-
- Widget::~Widget()
- {
- delete ui;
- }
-
- void Widget::callTopShell()
- {
- QString cmdTop = "top -b -n 1";
- m_topProcess->start(cmdTop);
- }
-
- void Widget::processFinished(){
- qDebug()<< "process Finished";
-
- QEventLoop loop;
- QTimer::singleShot(0.2 * 1000, &loop, SLOT(quit()));
- loop.exec();
-
- initListWidget();
- callTopShell();
- }
-
-
- void Widget::initListWidget()
- {
- ui->textEdit->clear();
- }
-
- void Widget::readProcess()
- {
- qDebug()<< "readProcess called!";
- //qDebug()<< m_topProcess->readAll();
- ui->textEdit->insertPlainText(m_topProcess->readAll());
- }
main.cpp
- #include "widget.h"
- #include <QApplication>
-
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- Widget w;
- w.show();
-
- return a.exec();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。