[英]How to paint an X11 Pixmap using Qt5
我正在尝试将X11 Pixmap绘制到QWidget
。
在过去使用Qt4.x时,我会利用QPixmap::fromX11Pixmap
来创建可以在绘画中轻松使用的QPixmap
。 但是,此功能已在Qt5中删除,据我所知,该功能尚未在Qt Framework的其他位置提供。
虽然我已经能够创建和分配X11 Pixmap,但是我还没有找到任何解决方案来执行绘画。 欢迎任何建议/解决方案!
我遇到了同样的问题,没有找到任何答案。 经过一些破解后,我来到了这个解决方案。
// 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);
函数qimageFromXImage(...)
的代码可以在https://github.com/adobe/webkit/blob/master/Source/WebCore/plugins/qt/QtX11ImageConversion.h中找到。您可以将标头和实现复制到您的源树。
问题解决了! 可以与QQuickPaintedItem或QGraphicsItem一起使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.