#include "CMainControl.h"
#include <QDebug>
#include <QCoreApplication>
#include <QDir>
#include <QApplication>
#include <QDesktopWidget>
#include <QFile>
#include <QFileInfo>
#include <QTextStream>
#include <QSettings>
#include <QByteArray>
#include <QCryptographicHash>
#include <QDateTime>
#include <QUuid>
CMainControl* CMainControl::m_pInstance = new CMainControl();
CMainControl::CMainControl(QObject *parent)
: QObject(parent)
, m_pMsgTaskThread(nullptr)
{
initConnect();
qDebug() << "CMainControl==============================";
}
CMainControl::~CMainControl()
{
qDebug() << "Destructor() ===============~CMainControl=";
stopMsgTask();
delete m_pMsgTaskThread;
m_pMsgTaskThread = nullptr;
}
void CMainControl::initData()
{
m_pMsgTaskThread = new CMessageQueueThread();
connect(m_pMsgTaskThread, &CMessageQueueThread::signalQueueWebSocketMessageData,
this, &CMainControl::slotParseMessageData, Qt::BlockingQueuedConnection);
//阻塞连接等slotParseMessageData函数执行完了再发下一个信号
m_pMsgTaskThread->start();
m_nDesktopWidth = QApplication::desktop()->width();
m_nDesktopHeight = QApplication::desktop()->height();
}
void CMainControl::slotParseMessageData(const QString &message)
{
qDebug()<<"CMainControl::slotParseMessageData:================" << message;
}
void CMainControl::slotAddQueueMessageData(const QString &message)
{
mutexM.lock();
qDebug()<<"CMainControl::slotAddQueueMessageData:==============message.size=====" << message.size();
m_qQueueMsg.enqueue(message);
m_waitCondition.notify_all();
mutexM.unlock();
}
void CMainControl::initConnect()
{
}
int CMainControl::getDesktopWidth()
{
return m_nDesktopWidth;
}
int CMainControl::getDesktopHeight()
{
return m_nDesktopHeight;
}
int CMainControl::getMessageCount()
{
return m_qQueueMsg.size();
}
void CMainControl::stopMsgTask()
{
if(!m_pMsgTaskThread||m_pMsgTaskThread->stopState())
return;
qDebug() << "CMainControl::stopMsgTask========================================" << __LINE__;
if(m_pMsgTaskThread)
m_pMsgTaskThread->stop();
m_waitCondition.notify_all();
m_qQueueMsg.clear();
m_pMsgTaskThread->deleteLater();
m_pMsgTaskThread = nullptr;
qDebug() << "CMainControl::stopMsgTask=======2=================================" << __LINE__;
}
Qt中使用QQueue模拟消息队列
5星 · 超过95%的资源 需积分: 41 36 浏览量
2021-01-14
21:19:38
上传
评论 10
收藏 6KB ZIP 举报
班公湖里洗过脚
- 粉丝: 579
- 资源: 18
最新资源
- HCIP-Datacom笔记 (1).pdf
- yolov5,SSD 可能使用到的一些代码
- bbbbbbbbbbbbbbbbbb
- 安卓逆向学习笔记之Frida Stalker 还原OLLVM AES.docx
- 安卓逆向学习笔记之unicorn来trace还原OLLVM Base64.docx
- 最新版本私钥助记词碰撞器大富豪使用python进行制作通过接口的方式进行验证支持多币种多链多网络一分钟万次验证高出货率
- 介绍离散性制造行业的MES系统流程
- Arduino IDE压缩包版本,2024年4月26日,最新版本
- 基于IDEA-CCNL/Randeng-Pegasus-238M-Summary-Chines微调的中文文本摘要任务源码+数据集
- 自动驾驶-状态估计和定位之直方图滤波(Histogram+Filter)定位应用和源码.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论10