qt中进程的使用

qt中的进程使用需要用到头文件:include<QProcess>

首先来看看需要用到的主要的函数

(1)进程的定义:

  QProcess *mprocess; //定义一个进程参数

(2)进程的初始化:

//初始化进程对象
 mprocess = new QProcess();

(3)启动进程

 //启动计算器
  mprocess->start("calc"); 

(4)使用进程读取数据

 while(mprocess->canReadLine()) //全部读出进程中的数据

(5)字符拼接QStringList的使用方法

    QStringList list;
    //拼接字符串,跟appen相似
    list<<"ech0";
    list<<ui->comboBoxArg->currentText();
    mprocess->start(ui->comboBoxCmd->currentText(),list);//启动进程,后面跟的是参数

头函数:process.h

 1 #ifndef PROCESS_H
 2 #define PROCESS_H
 3
 4 #include <QMainWindow>
 5 #include <QProcess> //qt中进程的头文件
 6 namespace Ui {
 7 class Process;
 8 }
 9
10 class Process : public QMainWindow
11 {
12     Q_OBJECT
13
14 public:
15     explicit Process(QWidget *parent = 0);
16     ~Process();
17     QProcess *mprocess; //定义一个进程参数
18
19 private slots:
20     void read_data();
21     void on_btn_cmd_clicked();
22
23 private:
24     Ui::Process *ui;
25 };
26
27 #endif // PROCESS_H

源文件:process.cpp

 1 #include "process.h"
 2 #include "ui_process.h"
 3 #include <QDebug>
 4 #include <QStringList>
 5 Process::Process(QWidget *parent) :
 6     QMainWindow(parent),
 7     ui(new Ui::Process)
 8 {
 9     ui->setupUi(this);
10     //初始化进程对象
11     mprocess = new QProcess();
12
13     //监听读数据信号
14     connect(mprocess,SIGNAL(readyRead()),this,SLOT(read_data()));
15
16     //添加运行参数
17     ui->comboBoxArg->addItem("192.168.1.246");
18     ui->comboBoxArg->addItem("./");
19     ui->comboBoxArg->addItem("c++");
20
21     ui->comboBoxCmd->addItem("ifconfig");
22     ui->comboBoxCmd->addItem("ls");
23     ui->comboBoxCmd->addItem("./test");
24
25 }
26
27 Process::~Process()
28 {
29     delete ui;
30 }
31
32
33 void Process::read_data()
34 {
35     while(mprocess->canReadLine()) //全部读出进程中的数据
36     {
37          qDebug()<<mprocess->readLine();
38     }
39
40 }
41
42 void Process::on_btn_cmd_clicked()
43 {
44     QStringList list;
45     //拼接字符串,跟appen相似
46     list<<"ech0";
47     list<<ui->comboBoxArg->currentText();
48
49     mprocess->start(ui->comboBoxCmd->currentText(),list);//启动进程,后面跟的是参数
50
51 }
时间: 2024-11-01 15:52:23

qt中进程的使用的相关文章

4.QT中进程操作,线程操作

 QT中的线程操作 T19Process.pro SOURCES += \ main.cpp CONFIG += C++11 main.cpp #include <QCoreApplication> #include <QProcess> #include <QDebug> int main(int argc, char** argv) {     QCoreApplication app(argc, argv);       QProcess process;  

QT中QProcess调用命令行的痛苦经历

阅读目录 创建压缩包的方法 在QT中调用命令行 在QT中调用C++创建的dll 在QT程序中需要将某些目录和文件压缩为一个rar的压缩包,于是想到了在QT中通过QProcess类调用命令行的rar.exe来达到效果,但是没想到QProcess类用起来很麻烦,而且达不到效果,折腾了2天仍然没找到原因,使用另外一种办法解决了. 回到顶部 创建压缩包的方法 在windows平台创建压缩包,可以直接使用rar.exe,该程序在安装winrar之后,在其安装目录下就可以找到.该程序是winrar对应的命令

Qt 中程序自动重启

参照至 dbzhang老师的博文,记录于此....... 要想理解重启,先得看看Qt程序怎么退出! 1.退出 [cpp] view plain copy int main(int argc, char** argv) { QApplication a(argc, argv); Widget w; w.show() return a.exec(); } 最后一句启动了主线程的事件循环.而要退出程序,就是要退出这个事件循环,使main函数返回. 如何退出? 正确方式: [cpp] view plai

解析Qt中QThread使用方法

本文讲述的是在Qt中QThread使用方法,QThread似乎是很难的一个东西,特别是信号和槽,有非常多的人(尽管使用者本人往往不知道)在用不恰当(甚至错误)的方式在使用QThread,随便用google一搜,就能搜出大量结果出来.无怪乎Qt的开发人员 Bradley T. Hughes 声嘶力竭地喊you are-doing-it-wrong 和众多用户一样,初次看到这个时,感到 Bradley T. Hughes有 些莫名奇妙,小题大作.尽管不舒服,当时还是整理过一篇博客QThread 的使

(73课)Qt中的多线程编程(一)

一.Qt中通过QThread直接支持多线程 1.QThread是一个跨平台的多线程解决方案 2.QThread以简洁易用的方式实现多线程编程 注意:1.Qt中的线程以对象的形式被创建和使用 2.每一个线程对应着一个QThread对象 QThread这个类,是一个线程父类,我们需要继承这个QThread类. QThread类,提供了一组成员函数.一个线程是以一个对象的形式来表现出来,所以说,我们创建一个 线程的时候,实际上就是创建了一个这个QThread线程类的对象 一个线程对应一个QThread

qt新进程工作目录的设置(工作目录确实是被子进程继承的,但也可以设置)

经过试验,qt启动一个新的进程时,这个进程的工作目录是继承父进程的,无论是通过start还是startDetached来启动. 其实对于linux系统,qt底层应该也是调用fork.exec之类的函数,对于fork,参看apue中文版第三版,有以下解析: 在f o r k之后处理文件描述符有两种常见的情况:(1) 父进程等待子进程完成.在这种情况下,父进程无需对其描述符做任何处理.当子进程终止后,它曾进行过读.写操作的任一共享描述符的文件位移量已做了相应更新.(2) 父.子进程各自执行不同的程序

QT中QProcess调用详解及实验

在QT程序中需要将某目录和文件压缩为一个rar的压缩包,于是想到了在QT中通过QProcess类调用命令行的rar.exe来达到效果,但是没想到QProcess类用起来很麻烦,而且达不到效果,折腾了2天仍然没找到原因,使用另外一种办法解决了. 创建压缩包的方法 在windows平台创建压缩包,可以直接使用rar.exe,该程序在安装winrar之后,在其安装目录下就可以找到.该程序是winrar对应的命令行版本,其语法例子如下: rar.exe a -k -r -s -m1 test.rar d

Linux下QT中执行shell命令

当需要在QT中执行shell命令时可以利用以下方法: (1)首先包含头文件: #include <QProcess> (2)执行shell命令: QProcess::execute("ls"); ///////////////////// #include  <QProcess> void Widget:on_pushButton_clicked() { //* system("ls");//调用LINUX C函数库中的system(cons

第三十八课、Qt中的事件处理(上)

一.图形界面应用程序的消息处理模型 二.Qt的事件处理 1.Qt平台将系统产生的消息转换为Qt事件(每一个系统消息对象Qt平台的一个事件) (1).Qt事件是一个QEvent的对象 (2).Qt事件用于描述程序内部或者外部发生的动作 (3).任意的QObject对象都具备事件处理的能力 2.GUI应用程序的事件处理方式 (1).Qt事件产生后立即被分发到QWidget对象 (2).QWidget中的event(QEvent*)进行事件处理 (3).event()根据事件类型调用不同的事件处理函数