我在uint8_t緩衝區中有一個圖像,我試圖用QImage作爲包裝來在圖像上寫文本。我用drawLine()沒有問題,但是drawText()使程序崩潰。下面的代碼是一個boost線程的一部分,我想在每個圖像上遍歷函數時爲它們寫文本。 Qt中有什麼錯誤我不知道?在QImage崩潰程序上的drawText()
uint8_t *frameBuffer; // this contains image pixels
QImage img(frameBuffer, sizeX, m_sizeY, QImage::Format_RGB888);
QPainter p(&img);
p.setPen(QPen(Qt::green));
p.setFont(QFont("Times", 10, QFont::Bold));
p.drawLine(img.rect().bottomLeft().x(), img.rect().bottomLeft().y()-10,
img.rect().bottomRight().x(), img.rect().bottomRight().y()-10); //works!
p.drawText(img.rect(), Qt::AlignCenter, "Help"); //crashes program
你有沒有檢查framebuffer是否有效和足夠大? –
是的,我有。當我註釋掉drawText行時,drawline命令按預期工作。 – JonnyCplusplus
1,這是一個完整的Qt應用程序的一部分?你在開始時是否有QApplication? 2,你是否叫p.end(),當某些事情超出範圍而且錯誤只是指向最後一個操作時,它可能實際上會崩潰。 –