共享段初始化ID

Dialog::Dialog(QWidget *parent): QDialog(parent), sharedMemory("QSharedMemoryExample")
{ui.setupUi(this);connect(ui.loadFromFileButton, &QPushButton::clicked,this, &Dialog::loadFromFile);connect(ui.loadFromSharedMemoryButton, &QPushButton::clicked,this, &Dialog::loadFromMemory);setWindowTitle(tr("SharedMemory Example"));
}

加载内容并将内容上传到共享段中

void Dialog::loadFromFile()
{if (sharedMemory.isAttached())detach();ui.label->setText(tr("Select an image file"));QString fileName = QFileDialog::getOpenFileName(0, QString(), QString(),tr("Images (*.png *.xpm *.jpg)"));QImage image;if (!image.load(fileName)) {ui.label->setText(tr("Selected file is not an image, please select another."));return;}ui.label->setPixmap(QPixmap::fromImage(image));
//! [1] //! [2]// load into shared memoryQBuffer buffer;buffer.open(QBuffer::ReadWrite);QDataStream out(&buffer);out << image;int size = buffer.size();if (!sharedMemory.create(size)) {ui.label->setText(tr("Unable to create shared memory segment."));return;}sharedMemory.lock();char *to = (char*)sharedMemory.data();const char *from = buffer.data().data();memcpy(to, from, qMin(sharedMemory.size(), size));sharedMemory.unlock();
}

从共享段中获取内容

void Dialog::loadFromMemory()
{if (!sharedMemory.attach()) {ui.label->setText(tr("Unable to attach to shared memory segment.\n" \"Load an image first."));return;}QBuffer buffer;QDataStream in(&buffer);QImage image;sharedMemory.lock();buffer.setData((char*)sharedMemory.constData(), sharedMemory.size());buffer.open(QBuffer::ReadOnly);in >> image;sharedMemory.unlock();sharedMemory.detach();ui.label->setPixmap(QPixmap::fromImage(image));
}

Qt_共享内存(QSharedMemory)未完成相关推荐

  1. QSharedMemory共享内存实现进程间通讯(IPC)及禁止程序多开

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSharedMemory共享内存实现进程间通讯(IPC)及禁止程序多开     本文地址:h ...

  2. showdialog 尝试读取或写入受保护的内存_TreadMarks: 基于工作站网络的共享内存计算...

    TreadMarks: 基于工作站网络的共享内存计算 以前学MIT6.824时看过TreadMarks相关论文,这篇论文当时只翻译了一半.最近无意中看到这篇未完成的翻译,google了下发现仍然没有人 ...

  3. qt label显示文字_Qt官方示例共享内存

    这个例子展示了如何使用QSharedMemory类(共享内存)进行进程间通信.   构建示例,请运行make.要运行该示例,请运行两个实例.main()函数创建一个应用程序和我们示例的Dialog类的 ...

  4. QT实现共享内存进行进程间通信

    QT实现共享内存进行进程间通信 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 演示使用带有QSharedMemory类的共享内存进行进程间通信. 共享内存示例显示了 ...

  5. 【Qt】Qt之进程间通信(共享内存)【转】

    简述 上一节中,我们分享下如何利用Windows消息机制来进行不同进程间的通信.但是有很多局限性,比如:不能跨平台,而且必须两个进程同时存在才可以,要么进程A发了消息谁接收呢? 下面我们来分享另外一种 ...

  6. Qt之进程间通信(共享内存)

    简述 上一节中,我们分享下如何利用Windows消息机制来进行不同进程间的通信.但是有很多局限性,比如:不能跨平台,而且必须两个进程同时存在才可以,要么进程A发了消息谁接收呢? 下面我们来分享另外一种 ...

  7. alin的学习之路:共享内存

    alin的学习之路:共享内存 1. 概念 共享内存是进程间通信中效率最高的一种方式. 共享内存: 可以被多个进程同时使用的一块内核的内存 有血缘关系的进程 没有血缘关系的进程 这块内存不属于任何的进程 ...

  8. QT 进程间通信——共享内存

    简述 共享内存(Shared Memory)是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝.共享内存实际就是内存映射的一种特殊情况.在<windows核心编程> ...

  9. NumPy — 创建全零、全1、空、arange 数组,array 对象类型,astype 转换数据类型,数组和标量以及数组之间的运算,NumPy 数组共享内存

    NumPy 简介 一个用 python 实现的科学计算包.包括: 1.一个强大的 N 维数组对象 Array : 2.比较成熟的(广播)函数库: 3.用于整合 C/C++ 和 Fortran 代码的工 ...

最新文章

  1. [导入]防止你的日志页被人iframe
  2. 巧用 Protobuf 反射来优化代码,拒做 PB Boy
  3. NodeJS开发c++扩展模块
  4. 流水线问题--计算机体系结构
  5. vmware虚拟机克隆CentOS7 出现的网络问题解决办法
  6. PyQt5 QTreeWidget更改item项前的展开折叠三角图标
  7. 7723java梦游游戏,渠道SDK登录
  8. ip route配置静态路由_华为路由交换技术 | 静态路由配置
  9. 自动获取关键词插件,双标题关键词插件
  10. 【iqiqiya专版】超级网易云音乐V1.0----网易云解析下载工具
  11. html测试报告模板,测试报告模板(完整版).doc
  12. halcon手眼标定
  13. 用 SQL 玩转世界银行全球 GDP 数据
  14. 城市聚焦:全球十二大性感之城
  15. P1500 丘比特的烦恼
  16. deepin 系统 微信登录提示版本过低解决方法
  17. BZOJ1023 [SHOI2008]仙人掌图
  18. POJ Haybale Guessing
  19. 【踔厉奋发,笃行不怠】中创算力召开2021年终工作会议
  20. android 沉浸式菜单栏,Android沉浸式全屏讲解(状态栏、导航栏处理)

热门文章

  1. 阿里云服务器ECS选型
  2. linux下安装rar解压包
  3. AJAX实现瀑布流布局
  4. 面向对象第二节课,属性,构造方法,成员方法
  5. java线上调试小结
  6. 【转】win7 虚拟机virtualbox中ubuntu12.04安装samba实现文件共享
  7. CSliderCtrl鼠标点击精确定位
  8. LAMP环境搭建过程中出现的问题——基于VM虚拟CentOS-5.6
  9. html语言的字体设置
  10. git 删除和复制远程分支