когда родительское окно x11 к Qwidget, не может применить прозрачный фон x11 - PullRequest
0 голосов
/ 20 мая 2019

Сначала я создаю контейнер виджетов, используя QWidget :: createWindowContainer (QQuickView, QWidget). Во-вторых, я делаю прозрачное окно x11. (XCreateWindow)

Когда я создаю окно x11, родительским объектом которого является DefaultRootwindow, окно x11 получается совершенно прозрачным. Однако, когда я устанавливаю это окно x11 на QWidet, прозрачность не работает. Цвет фона - черный.

Кроме того, когда я устанавливаю цвет фона окна x11 на другой цвет, например красный, розовый, желтый, он получается идеально, но непрозрачность не работает.

Я думаю, что когда я устанавливаю родителя окна x11 в Qwidget, только прозрачная область, заполненная черным пикселем.

Я хочу сделать прозрачность окна 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);
...