Qt共享內存讀寫

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    qmemory.setKey ("zzw");
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::on_pushButton_clicked()
{
    QString s="zzw123";
    ui->label->setText (s);
    QBuffer buffer;
    buffer.open (QIODevice::ReadWrite);
    QDataStream in(&buffer);
    in<<s;
    qmemory.create (s.size ());
    qmemory.lock ();
    char* to=(char*)qmemory.data ();
    const char* from=buffer.data ().data ();
    memcpy (to,from,qmemory.size ());
    qmemory.unlock ();
}
void MainWindow::on_pushButton_2_clicked()
{
    if( qmemory.isAttached ()){
        QMessageBox::information(this,"info","attached");
    }else{
        qmemory.attach ();
        QBuffer nbuffer;
        nbuffer.setData((char*)qmemory.constData(), qmemory.size());
         nbuffer.open (QIODevice::ReadWrite);
        QDataStream out(&nbuffer);
        QString s;
        out>>s;
        ui->label->setText (s);
        qmemory.detach ();
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章