Я создаю чтение QImage из общей памяти и добавляю его в QList, а в painttevent я хочу нарисовать все изображения, которые у меня есть в QList, но в результате происходит сбой, как показано в фрагменте кода ниже.
Я создал определенный пользователем paintImage () для чтения по одному из QList и QPainter и попробовал рисовать, хотя сбоев нет, но в итоге на экране нет изображений.
int fd = open("/run/user/1000/xpra.NanPLD.mmap", O_RDONLY);
int filesize = 256*1024*1024;
void* addr = mmap(NULL, filesize, PROT_READ, MAP_PRIVATE, fd, 0);
createImage(addr,width, height, offset, colorFormat);
void Client::createImage(void* chunk,int width, int height, int offset,
QString colorFormat)
{
qDebug() << "offset Value " << offset;
image = QImage(((const unsigned char*)chunk ) + offset, width, height, QImage::Format_RGB888);
xpraImages.append(image);
}
void Client::paintEvent(QPaintEvent *event)
{
qDebug() <<"Inside paint event" ;
QPainter painter(this);
static int counter = 0;
qDebug() << "counter: " << counter;
qDebug() << "Image list length : " << xpraImages.count();
if(counter < xpraImages.count()){
qDebug() << "counter " << counter;
image = xpraImages.at(counter); // image is class member
qWarning() << image.isNull() << image.width()<< image.height();
if(!image.isNull()){
qDebug() << "Inside paintvent after nullcheck";
painter.drawImage(0,0,image); // here crashes
}
counter++;
QTimer::singleShot(50, this, SLOT(update()));
}
}