我正在尝试将X11 Pixmap绘制到QWidget
。
过去使用Qt4.x我会利用QPixmap::fromX11Pixmap
创建一个我可以在绘画中轻松使用的QPixmap
。但是,在Qt5中已删除此功能,据我所知,Qt框架中的其他功能尚未提供。
虽然我已经能够创建和分配X11 Pixmap,但我无法找到任何解决方案来执行绘画。欢迎任何建议/解决方案!
答案 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一起使用。