2

我试图在QSharedMemory写入 a 时获取信号。我按以下方式尝试了几次:

QSharedMemory *sm = new QSharedMemory("key", this);
QByteArray *ba;
QBuffer *buff;
if(sm->create(1024))
{
    ba = new QByteArray();
    ba->setRawData((char*)sm->data(), sm->size());
    buff = new QBuffer(ba, this);
    connect(buff, SIGNAL(readyRead()), this, SLOT(bufferReadyRead()));

    memset(sm->data(), NULL, sm->size());
    QByteArray response = myDomDoc.toByteArray();

    sm->lock();
    buff->open(QIODevice::ReadWrite);
    memcpy((char*)sm->data(), response.data(), sm->size()-1);
    buff->close();
    /****Here I want the QBuffer's readyRead() signal to emit ****/
    sm->unlock();
}

我的尝试可能有点扭曲,但我希望你能明白。我正在尝试将数据包装起来QBufferQSharedMemory以便在有人写入QSharedMemory.

这是一个好方法吗?有更好的方法吗?QSharedMemory如果不是在写入my 时获得信号的最佳方式是什么。

我认为问题在于,一旦我写入共享内存数据,QByteArray 就会实现写入时复制,因此QBuffer不会检测到写入其数据的内容。

我对吗?

此致。

4

0 回答 0