我正在尝试在写入QSharedMemory
时获取信号。我按照以下方式尝试了几次:
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();
}
我的尝试可能有点扭曲,但我希望你明白这个想法。我正在尝试将QBuffer
包裹在QSharedMemory
数据周围,这样当有人写入QSharedMemory
时我就会收到信号。
这是一个很好的方法吗?有没有更好的方法呢?如果不是,在写入QSharedMemory
时获取信号的最佳方式是什么。
我认为问题在于,只要我写入共享内存数据,QByteArray就会实现写时复制,因此QBuffer
不会检测写入其数据的内容。
我是对的吗?
最好的问候。