当前位置: 首页 > news >正文

打开百度搜索网站玉山网站建设

打开百度搜索网站,玉山网站建设,博客网站建设方案,昆明网站设计都需要设计什么在子线程中的一个槽函数,当读取到dxf文件完成后,结果通过在该槽函数中的 dx_data* pDxfData 指针变量读取。 然后通过QVariant封装该指针变量。发送到主线程中。 void qcWorker::slotReadDxfFile(QString dir) {bool bRtn{ false }; //定义一个局部指针…

在子线程中的一个槽函数,当读取到dxf文件完成后,结果通过在该槽函数中的 dx_data* pDxfData

指针变量读取。 然后通过QVariant封装该指针变量。发送到主线程中。

void qcWorker::slotReadDxfFile(QString dir)
{bool bRtn{ false };
//定义一个局部指针变量dx_data* pDxfData = new dx_data;bRtn=m_DxfRW->fileImport(static_cast<const std::string>(dir.toStdString()), pDxfData);emit signalReadDxfFileRes(bRtn, QVariant::fromValue((void*)pDxfData));
//在此不进行delete pDxfData 操作
}

主线程中的槽函数

//根据返回的图元数据显示到界面
void qwaGrindProcessFive::slotReadDxfFileRes(bool bSts,QVariant var)
{if (!bSts){//读取dxf错误}else{//定义一个全局指针变量dx_data* m_pDxfData m_pDxfData = (dx_data*)var.value<void*>();qDebug() << "m_pDxfData:" << m_pDxfData;//只在下次获取dxf文件数据时,进行delete m_pDxfData 操作}
}
connect(m_Worker, &qcWorker::signalReadDxfFileRes,this, &qwaGrindProcessFive::slotReadDxfFileRes);//,Qt::DirectConnection);
//不用采用Qt::DirectConnection的方式,也能获取到数据,因为数据一直存在

在主线程中将对应指针转换为dx_data对象指针。

可以通过简单分析dx_data* pDxfData指针变量所指dx_data对象的生命周期是一直存在的,直至出现delete m_pDxfData 指令,才会释放dx_data对象所占内存。

分析要点:

1.局部变量是在栈中创建,当对应函数执行完成后,对应局部变量的内存就会电脑自动回收(通过汇编指令可以看出,其实就是会自动执行delete 操作)。

2.在局部变量中new出来的对象,将在堆中创建。所以dx_data* pDxfData该指针变量是在栈上,而其所指的地址是在堆上创建。这个堆的地址大小就是dx_data对象大小。所以这里也区分指针变量及指针变量所指对象。指针变量是在栈上,只存储了dx_data对象在堆上的首地址而已,真正的数据是在堆上。在堆上创建的对象,只能通过delete人工释放对应堆上的内存。

3.当槽函数与信号通过自动模式连接时,对应槽在各自线程中运行。当采用Qt::DirectConnection方式连接时,即使在不同线程中,也会在信号发送完成后立即执行对应槽函数,直至完成。

4.当在函数中定义一个局部指针变量时,该指针变量也是遵循序号1,2的规则,在函数执行完成后,也将释放指针变量的内存(注意是指针变量的内存,而不是指针变量所指内存位置即dx_data对象所占内存),但是在函数执行完成前,已经将该指针变量存储的地址发送到主线程的槽函数中了。当槽函数执行时,也就仍然能读取到在子线程函数中创建的dx_data对象堆中的数据。

5.而在主函数中将收到的指针赋值给一个全局变量中,全局变量是在静态区创建的,其生命周期将一直存在。通过将指针赋值给全局变量的方式,也就将在子程序中的局部变量变成了一个全局变量了。这也是指针的魅力。也是容易让人头昏的存在。特此记录,以供参考。

6.之所以不采用Qt::DirectConnection的方式也能获取到数据,真是因为这个指针的存在。保证了数据的生命周期一直存在。整个过程就相当于将指针做了转移。从一个局部变量转移到了一个全局变量中。这也是为什么没有在子函数中执行delete的原因。一旦执行delete则dx_data对象的内存将释放,在主线程中的槽函数将读取到一个空的数据。

http://www.yayakq.cn/news/596159/

相关文章:

  • 品牌网站建设优化公司哪家好无代码开发平台排名
  • 网站被黑了你会怎么想你该怎么做云商网站建设
  • 网站无缝背景百度站长网站文件验证
  • 教育网站怎么做wordpress 开放注册
  • wordpress 建站视频建筑工程公司有什么职位
  • 杨凌规划建设局网站怎么免费制作一个网站
  • 自己做卖东西网站wordpress用户密码重置
  • 高端品牌网站建设有哪些wordpress 分享到微信
  • 无锡论坛网本地网站中国住房和城乡建设厅官网
  • WordPress创建的网站wordpress tint2.5
  • 网站建站后维护需要做哪些秦皇岛网站
  • 宽屏网站模板冒用网站备案号建设网站
  • 网站建设的基本情况高端建站收费
  • 文章网站哪里建设好长尾关键词搜索
  • 郑州网站建设网站怎么把凡科网里做的网站保存成文件
  • 高要建设网站手机网站要素
  • 哈尔滨建站的网站手机制作音乐的软件app
  • 惠州网站建设方案推广网页美工设计什么
  • 宝安做棋牌网站建设哪家公司便宜网站建设后期维护小魔仙
  • 网站移动端流量做网站怎么销售
  • 石排做网站网站建设公司怀化
  • 外贸公司访问国外网站北京百度seo价格
  • 沈阳网站建设syxhrkj公司网站制作需要什么步骤
  • 世界杯消息哪个门户网站做的好怎样在百度做网站
  • 网站页面优化分析wordpress 如何制作模板
  • 企业网站建设 电脑配置温州室内设计公司排名
  • 怎么看 网站开发语言自己做软件的网站
  • 做足彩推荐赚钱的网站深圳精品网站设计
  • 个人网站平台搭建网站中文名称
  • 忘记网站管理员密码公司简介模板图片