如何使用Qt5绘制X11 Pixmap

时间:2013-05-28 20:17:00

标签: qt x11 qt5 qpixmap

我正在尝试将X11 Pixmap绘制到QWidget

过去使用Qt4.x我会利用QPixmap::fromX11Pixmap创建一个我可以在绘画中轻松使用的QPixmap。但是,在Qt5中已删除此功能,据我所知,Qt框架中的其他功能尚未提供。

虽然我已经能够创建和分配X11 Pixmap,但我无法找到任何解决方案来执行绘画。欢迎任何建议/解决方案!

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,没有找到任何答案。在做了一些黑客攻击后,我找到了解决方案。

// Initialize your X11 enviroment.
Display* display ...
Pixmap pixmap ... 
/* Do your pixmap drawing HERE */
// Make sure all drawing have been done
XFlush(display);
// Convert your Pixmap to XImage
XImage *image = XGetImage(display, pixmap, 0, 0, width, height, 0xFFFFFFFF, ZPixmap);
// Convert XImage to QImage
QImage tempImage = qimageFromXImage(image);
// Destroy temporal XImage
XDestroyImage(image);
// Finally create a QPixmap
QPixmap finalPixmap = QPixmap::fromImage(tempImage);

可以在https://github.com/adobe/webkit/blob/master/Source/WebCore/plugins/qt/QtX11ImageConversion.h找到功能qimageFromXImage(...)的代码 您可以将标头和实现复制到源树。

问题解决了!可以与QQuickPaintedItem或QGraphicsItem一起使用。

相关问题