QT之进程和线程

使用QT之进程和线程

共享内存

共享内存使用方法实例,在.ui中添加两个按钮控件,分别命名为:从文件中加载图片和从共享内存显示图片。并分别通过Label1和Label2显示出来。方法步骤:

(1)使用QFileDialog读取一幅图片,使用load加载到image中,在Label1中显示;
(2)创建buffer缓冲区,将image中的图片数据写入到buffer缓冲区中;
(3)在sharedMemory即共享内存中创建buffer大小的内存空间;
(4)调用sharedMemory的lock函数加锁,这是为了保证在同一时刻只有一个进程访问共享内存;
(5)通过memcpy函数将buffer中的图片数据复制到共享内存中;
(6)调用sharedMemory的unlock函数解锁;
(7)当点击 从文件中加载图片 按钮时,便在Label1中打开了图片并同时将图片存入到了共享内存中;之后我们通过共享内存直接读取图片;
(8)当点击 从共享内存显示图片 按钮时,使用buffer从共享内存中读取图片并在Label2中显示

void Dialog::loadFromFile()
{
    if(sharedMemory.isAttached()) detach();
    ui->label->setText(tr("选择一个图片"));
    QString filenames=QFileDialog::getOpenFileName(0,QString(),QString(),tr("images(*.png *.jpg)"));//读图片
    QImage image;
    image.load(filenames);//加载图片
    ui->label->setPixmap(QPixmap::fromImage(image));//标签显示图片
    QBuffer buffer;//建立缓冲区
    buffer.open(QBuffer::ReadWrite);//设置模式
    QDataStream out(&buffer);
    out<<image;//将图片写入缓冲区
    int size=buffer.size();//计算缓冲区大小
    sharedMemory.create(size);//在共享内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值