[英]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.