1. 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;
    // process.start("/home/xuegl/T0718/build-T18Database-Desktop-Debug/T18Database");
    process.start("ssh root@42.121.13.248");
    // process.start("ssh", QStringList() << "root@42.121.13.248" << "aa" << "bbb");
    // process.write("1\n", 2);
    process.waitForFinished();
 
    // process.waitForFinished();
    qDebug() << process.readAll();
    // qDebug() << process.exitCode();
 
    return app.exec();
}
  1. 多线程(可以通过moveToThread(QThread *)的方法指定给指定的线程)

新建项目T20Thread,项目代码如下:

T20Thread.pro

HEADERS
+=
\

Worker.h
\

MyThread.h

SOURCES
+=
\

Worker.cpp
\

MyThread.cpp
\

main.cpp

Worker.h

#ifndef
WORKER_H

#define
WORKER_H

#include
<QObject>

#include
<QThread> 
//要开启线程的时候需要使用头文件<QThread>

#include
<QDebug>

class
Worker
:
public
QObject

{

Q_OBJECT

public:

explicit
Worker(QObject
*parent
);

QThread
_thread;

bool
event(QEvent
*ev)

{

//通过QThread::currentThread()可以获得当前线程信息

qDebug()
<<
"event:"
<<
QThread::currentThread();

return
QObject::event(ev);

}

signals:

public
slots:

void
doWork()

{

qDebug()
<<
QThread::currentThread();

}

};

#endif
//
WORKER_H

Worker.cpp

#include
"Worker.h"

Worker::Worker(QObject
*parent)
:

QObject(parent)

{

//this->moveToThread(&_thread);

_thread.start();

connect(&_thread,
SIGNAL(finished()),
this,
SLOT(deleteLater()));

}

MyThread.h

#ifndef
MYTHREAD_H

#define
MYTHREAD_H

#include
<QThread>

#include
<QDebug>

class
MyThread
:
public
QThread

{

Q_OBJECT

public:

explicit
MyThread(QObject
*parent
);

void
foo()

{

qDebug()
<<
QThread::currentThread();

}

void
run()

{

foo();

qDebug()
<<
"thread
is
run";

}

signals:

public
slots:

};

#endif
//
MYTHREAD_H

MyThread.cpp

#include
"mythread.h"

MyThread::MyThread(QObject
*parent)
:

QThread(parent)

{

}

main.cpp

#include
<QCoreApplication>

#include
"mythread.h"

#include
"worker.h"

#include
<QTimer>

int
main(int
argc,
char*
argv[])

{

QCoreApplication
app(argc,
argv);

#if
0

MyThread
thread;

thread.start();

thread.foo();

#endif

qDebug()
<<
"main
thread
is"<<QThread::currentThread();

Worker*
worker
=
new
Worker();

QTimer*
timer
=
new
QTimer;

//worker->moveToThread(&thread);

QObject::connect(timer,
SIGNAL(timeout()),
worker,
SLOT(doWork()));

timer->setInterval(1000);

timer->start();

return
app.exec();

}

运行结果:

4.QT中进程操作,线程操作的更多相关文章

  1. QT的进程与线程(cmd /c的写法)

    该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处! 导语 在前面的几节内容中讲解了Qt网络编程的一些基本内容,这一节来看一下在Qt中进程和线程的基本应 ...

  2. Qt中与文件目录相关操作

    一.与文件目录操作有关操作. Qt中与文件目录相关的操作在QDir中,需加入#include <QDir>语句. QDir::drives()是列出电脑根目录下的所有目录,返回的是QFil ...

  3. qt中进程的使用

    qt中的进程使用需要用到头文件:include<QProcess> 首先来看看需要用到的主要的函数 (1)进程的定义: QProcess *mprocess; //定义一个进程参数 (2) ...

  4. Android中进程与线程及如何在子线程中操作UI线程

    1. Android进程 一个应用程序被启动时,系统默认创建执行一个叫做"main"的线程.这个线程也是你的应用与界面工具包(android.widget和android.view ...

  5. 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(

     新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...

  6. 4.关于QT中的QFile文件操作,QBuffer,Label上加入QPixmap,QByteArray和QString之间的差别,QTextStream和QDataStream的差别,QT内存映射(

     新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...

  7. 关于Java中进程和线程的详解

    一.进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命 周期.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而 ...

  8. Android中进程与线程

    常说的主线程(UI线程)是什么? 当一个Android程序刚启动的时候,我们的android系统就会启动一个带有一个单一线程的linux进程.默认情况下,所有的组件比如Activity都运行在同样的一 ...

  9. Python中进程和线程的总体区别

    Num01–>线程 线程是操作系统中能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位. 一个线程指的是进程中一个单一顺序的控制流. 一个进程中可以并发多条线程,每条线程并行 ...

随机推荐

  1. poj 1265 Area 面积+多边形内点数

    Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5861   Accepted: 2612 Description ...

  2. Mysq 索引优化

    MYSQL支持的索引类型 BTREE索引 特点: 通过引用以B+权的结构存储数据 能够加快数据的查询速度 更适合进行范围查找 应用: 全值匹配的查询 = 匹配最左前缀的查询 匹配列前缀查询 LIKE ...

  3. C语言程序设计第一次作业1

    (一)实验总结 1. 圆面积问题 1:求圆面积和周长 (1)输入圆的半径,计算圆的周长和面积. (2) (3) 2:判断闰年 (1)输入一个四位年份,判断其是否是闰年.闰年的判别条件是该年年份能被4整 ...

  4. java的迭代器详解

    迭代器的引出 在jdk1.5版本之前是没有 foreach的,然而1.5版本就加上了foreach,而引入的新的foreach功能并不是在jvm上进行改进的因为代价太高,甲骨文工程师想到了一个比较好的 ...

  5. PTA 邻接矩阵存储图的深度优先遍历

    6-1 邻接矩阵存储图的深度优先遍历(20 分) 试实现邻接矩阵存储图的深度优先遍历. 函数接口定义: void DFS( MGraph Graph, Vertex V, void (*Visit)( ...

  6. 原生js实现preAll和nextAll方法

    一直以来都在好奇,jquery的prevAll和nextAll方法都是咋实现的,那么厉害,而且还那么方便.不得不说,jquery真的帮我们省去了开发中手写大量js代码带来的开发进度问题,而且很好的解决 ...

  7. log4j不生成日志文件的问题

    直接看我的注解吧 注意地址的斜杠,还有地址别写什么相对地址了,这包太老了,服务器update一下兼容问题就出来了. #第一个参数定义达到什么程度就输出 第二第三....第N 定义输出的类型 #debu ...

  8. Java instanceof 关键字是如何实现的?

    作者:RednaxelaFX链接:https://www.zhihu.com/question/21574535/answer/18998914来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...

  9. java反射 概念

    一.什么是反射机制         简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字,     那么就可以通过反射机制来获得类的所有信息. 二.哪里用到反射机制 ...

  10. 48. Rotate Image(中等)

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...