主线程最后必须调用exit()和wait()函数

源码地址 http://download.csdn.net/download/u010261063/10185891

#ifndef QSYSENDTHREAD_H
#define QSYSENDTHREAD_H#include <QThread>
#include<QTcpSocket>
#include<common.h>
#include<QTimer>
class QSYSendThread : public QThread
{Q_OBJECT
public:explicit QSYSendThread(QObject *parent = 0);signals:public slots:void ClientClosed();void ClientError(QAbstractSocket::SocketError socketError);void TimeOut();
public:void run();
private:QTcpSocket *m_client;QString m_conectIP;bool m_bconnect;uint m_connectPort;QTimer *m_pTimer;
};#endif // QSYSENDTHREAD_H

源文件

#include "qsysendthread.h"QSYSendThread::QSYSendThread(QObject *parent) : QThread(parent)
{}
void QSYSendThread::run()
{m_conectIP = g_EnvVariant.m_conectToIp;m_connectPort = g_EnvVariant.m_conectToPort;m_client = new QTcpSocket();m_client->connectToHost(m_conectIP,m_connectPort);connect(m_client,QTcpSocket::disconnected,this,QSYSendThread::ClientClosed,Qt::DirectConnection);connect(m_client,QTcpSocket::readyRead,this,QSYSendThread::ClientClosed,Qt::DirectConnection);if(m_client->state()==QAbstractSocket::ConnectedState){cout<<"connnect to server fail !!! ";}else{cout<<"connnect to server successful !!! ";}m_pTimer = new QTimer();m_pTimer->start(2000);connect(m_pTimer,QTimer::timeout,this,QSYSendThread::TimeOut,Qt::DirectConnection);exec();delete m_client;delete m_pTimer;
}
void QSYSendThread::ClientClosed()
{cout<<"server is closed !!! ";
}
void QSYSendThread::ClientError(QAbstractSocket::SocketError /*socketError*/)
{}
void QSYSendThread::TimeOut()
{if(m_client->state()==QAbstractSocket::UnconnectedState){m_client->connectToHost(m_conectIP,m_connectPort);cout<<"connnect to server  !!! ";}cout<<"timeout!! ";
}

关于QT多线程子线程使用信号和相关推荐

  1. PySide2多线程问题示例:创建新线程、子线程发射信号到主界面

    PySide2多线程问题示例:创建新线程.子线程发射信号到主界面 本文是在pyside学习过程中的记录,从无子线程.子线程在主程序中直接操作Qt界面.子线程发射信号操作主界面三个步骤出发,记录对多线程 ...

  2. Qt多线程-QThreadPool线程池与QRunnable

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt多线程-QThreadPool线程池与QRunnable     本文地址:http:// ...

  3. Qt多线程以及线程池

    目录 继承QThread类 简单使用 传递参数 QObject::MoveToThread()函数 QThreadPool线程池 多线程编程其实也不难,重要的是控制共享资源的修改,以及资源的使用权限控 ...

  4. Qt文档阅读笔记-Qt工作笔记-QThread解析与实例(主线程发送信号给子线程)

    目录 QThread 官方解析 博主栗子 子线程发射信号给主线程 QThread 官方解析 Detailed Description QThread类提供了跨平台的线程管理的API. QThread对 ...

  5. Qt对话框的事件循环分析(子线程中不能创建UI窗体分析)

    重要: GUI线程和辅助线程 如前所述,每个程序在启动时都有一个线程.这个线程被称为"主线程"(在Qt应用程序中也称为"GUI线程").Qt GUI必须在这个线 ...

  6. Qt对话框的事件循环分析(子线程中不能创建UI窗体分析2)

    Qt事件机制 QT-UI 后端 重要: GUI线程和辅助线程 如前所述,每个程序在启动时都有一个线程.这个线程被称为"主线程"(在Qt应用程序中也称为"GUI线程&quo ...

  7. qt 多线程、信号槽、moveToThread等机制之拨乱反正

    之所以要"拨乱反正",是因为很多教科书上的说法,还有网页上的说法,都是错误的. 我没有看过qt源码,看过一些书籍,做过一些实验,说下我的理解.如有谬误,还请讨论. 首先来看看教科书 ...

  8. QT 多线程的实现方法以及GUI线程与其他线程间的通信

    GUI线程 Qt应用程序exec后就会生成一个线程,这个线程就是主线程,在GUI程序中也称为GUI线程.主线程也是唯一允许创建QApplication或QCoreAppliation对象,比并且可以对 ...

  9. QT 主线程子线程互相传值

    本文实现了主线程给子线程传值.子线程给主线程传值.主线程子线程的互相传值.线程源文件mythread.h..cpp:主线程文件mainwindow.h..cpp;下面程序先从主线程调用子线程,子线程给 ...

最新文章

  1. 挑战8门UDACITY课程学习方法总结
  2. openwrt转载--openwrt框架分析
  3. Servlet线程安全2
  4. 女生做产品经理好吗_请做产品经理,别做功能经理
  5. Type EnumTypeInfo<xxxxx> cannot be used as key. Contained UNSUPPORTED key types: EnumTypeInfo<xxxxx>
  6. times(NULL) Segmentation fault
  7. 将自定义功能添加到Spring数据存储库
  8. JS中apply和call的应用和区别
  9. 【 2013华为杯编程大赛成都第三组前两题试题及答案】
  10. 虚拟机的管理(libvirtd)、移植和快照
  11. linux触摸屏代码解析,Linux触摸屏驱动解析
  12. java脚本封号_java中如何踢人下线?封禁某个账号后使其会话立即掉线!
  13. vim命令模式下粘贴内容
  14. 浅谈NB-IOT模块调试
  15. 密码包含大写小写的英文字母数字和特殊字符正则
  16. Java学习路线-20:正则表达式
  17. Redis持久化、备份:RDB和AOF
  18. linux学习lesson16
  19. 使用蒲公英平台测试iOS APP(示例)
  20. jenkins报错hudson.plugins.git.GitException: Could not init /root/.jenkins/workspace/DeployOrder/order

热门文章

  1. oracle 控制html输出样式,Oracle之sqlplus输出到html
  2. 语言木头折断放置问题_木头文化:干燥,是木成材的关键一步
  3. Intouch使用SIDirect OIServer 连接西门子PLC S7-300
  4. matlab第六章课后答案,matlab作业第6章
  5. Markdown代码框diff,高亮显示差异、增量、修改
  6. 网页制作 css样式,网页设计与制作-CSS样式.ppt
  7. Java怎么跑不起来_tarsJava example 跑不起来
  8. 电商面试经验(mybatis)
  9. Appium 解决手势密码 (java篇)
  10. 第四届HTML5峰会 - 上海站