首先,我使用QWidget :: createWindowContainer(QQuickView,QWidget)制作小部件容器。 其次,我制作透明的x11窗口。 (XCreateWindow)
当我创建父级为DefaultRootwindow的x11窗口时,x11窗口完全透明。 但是,当我将此x11窗口设置为QWidet时,透明度不起作用。 背景颜色为黑色。
另外,当我将x11窗口的背景色设置为其他颜色(例如红色,粉红色,黄色)时,它会完美显示出来,但是不透明度不起作用。
我认为当我将x11窗口的父级设置为Qwidget时, 仅透明区域填充有blackpixel。
我想使x11窗口透明,并想在QWidget内容区域下查看。 你知道我该如何解决这个问题? 为什么x11透明区域成为黑色像素区域?那一层是什么?
[示例代码]
ParentWidget = QWidget::createWindowContainer(QWindow window, QWidget parent);
p_window = window->winId();
XColor color, color_exact;
Colormap colormap;
unsigned int transparent;
colormap = DefaultColormap(xdisplay, 0);
XAllocNamedColor(xdisplay, colormap, "transparent", &color, &color_exact);
transparent = color.pixel;
XVisualInfo vInfo;
XSetWindowAttributes attr;
XMatchVisualInfo(xdisplay, DefaultScreen(xdisplay), 32, TrueColor, &vInfo);
attr.colormap = XCreateColormap(xdisplay, p_window, vInfo.visual, AllocNone);
attr.border_pixel = transparent;
attr.background_pixel = transparent;
XMainWindow = XCreateWindow(xdisplay, p_window, x, y, width, height, 0, vInfo.depth, InputOutput, vInfo.visual, CWColormap | CWBorderPixel | CWBackPixel, &attr);