关于QT多线程子线程使用信号和
主线程最后必须调用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多线程子线程使用信号和相关推荐
- PySide2多线程问题示例:创建新线程、子线程发射信号到主界面
PySide2多线程问题示例:创建新线程.子线程发射信号到主界面 本文是在pyside学习过程中的记录,从无子线程.子线程在主程序中直接操作Qt界面.子线程发射信号操作主界面三个步骤出发,记录对多线程 ...
- Qt多线程-QThreadPool线程池与QRunnable
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt多线程-QThreadPool线程池与QRunnable 本文地址:http:// ...
- Qt多线程以及线程池
目录 继承QThread类 简单使用 传递参数 QObject::MoveToThread()函数 QThreadPool线程池 多线程编程其实也不难,重要的是控制共享资源的修改,以及资源的使用权限控 ...
- Qt文档阅读笔记-Qt工作笔记-QThread解析与实例(主线程发送信号给子线程)
目录 QThread 官方解析 博主栗子 子线程发射信号给主线程 QThread 官方解析 Detailed Description QThread类提供了跨平台的线程管理的API. QThread对 ...
- Qt对话框的事件循环分析(子线程中不能创建UI窗体分析)
重要: GUI线程和辅助线程 如前所述,每个程序在启动时都有一个线程.这个线程被称为"主线程"(在Qt应用程序中也称为"GUI线程").Qt GUI必须在这个线 ...
- Qt对话框的事件循环分析(子线程中不能创建UI窗体分析2)
Qt事件机制 QT-UI 后端 重要: GUI线程和辅助线程 如前所述,每个程序在启动时都有一个线程.这个线程被称为"主线程"(在Qt应用程序中也称为"GUI线程&quo ...
- qt 多线程、信号槽、moveToThread等机制之拨乱反正
之所以要"拨乱反正",是因为很多教科书上的说法,还有网页上的说法,都是错误的. 我没有看过qt源码,看过一些书籍,做过一些实验,说下我的理解.如有谬误,还请讨论. 首先来看看教科书 ...
- QT 多线程的实现方法以及GUI线程与其他线程间的通信
GUI线程 Qt应用程序exec后就会生成一个线程,这个线程就是主线程,在GUI程序中也称为GUI线程.主线程也是唯一允许创建QApplication或QCoreAppliation对象,比并且可以对 ...
- QT 主线程子线程互相传值
本文实现了主线程给子线程传值.子线程给主线程传值.主线程子线程的互相传值.线程源文件mythread.h..cpp:主线程文件mainwindow.h..cpp;下面程序先从主线程调用子线程,子线程给 ...
最新文章
- 挑战8门UDACITY课程学习方法总结
- openwrt转载--openwrt框架分析
- Servlet线程安全2
- 女生做产品经理好吗_请做产品经理,别做功能经理
- Type EnumTypeInfo<xxxxx> cannot be used as key. Contained UNSUPPORTED key types: EnumTypeInfo<xxxxx>
- times(NULL) Segmentation fault
- 将自定义功能添加到Spring数据存储库
- JS中apply和call的应用和区别
- 【 2013华为杯编程大赛成都第三组前两题试题及答案】
- 虚拟机的管理(libvirtd)、移植和快照
- linux触摸屏代码解析,Linux触摸屏驱动解析
- java脚本封号_java中如何踢人下线?封禁某个账号后使其会话立即掉线!
- vim命令模式下粘贴内容
- 浅谈NB-IOT模块调试
- 密码包含大写小写的英文字母数字和特殊字符正则
- Java学习路线-20:正则表达式
- Redis持久化、备份:RDB和AOF
- linux学习lesson16
- 使用蒲公英平台测试iOS APP(示例)
- jenkins报错hudson.plugins.git.GitException: Could not init /root/.jenkins/workspace/DeployOrder/order
热门文章
- oracle 控制html输出样式,Oracle之sqlplus输出到html
- 语言木头折断放置问题_木头文化:干燥,是木成材的关键一步
- Intouch使用SIDirect OIServer 连接西门子PLC S7-300
- matlab第六章课后答案,matlab作业第6章
- Markdown代码框diff,高亮显示差异、增量、修改
- 网页制作 css样式,网页设计与制作-CSS样式.ppt
- Java怎么跑不起来_tarsJava example 跑不起来
- 电商面试经验(mybatis)
- Appium 解决手势密码 (java篇)
- 第四届HTML5峰会 - 上海站