Я ищу способ нарисовать любое наложение виджета QT на QVulkanWindow.Я не могу найти решение.Дочерняя / родительская иерархия и флаги QT не приносят ожидаемого поведения.Можно ли рисовать виджеты QT в верхней части QVulkanWindow?
Я пробовал следующую
1) попытку создать окно QWidget и Vulkan из одного родительского QWidget
auto widget = new QWidget;
widget->resize(m_default_width, m_default_height);
widget->show();
m_label = new QLabel("text.", widget);
m_label->show();
m_vulkan_window = std::make_shared<WSQVulkanWindow>(this);
m_vulkan_window->setVulkanInstance(&m_qt_vk_instance);
m_vulkan_window->show();
auto wrapper = QWidget::createWindowContainer(m_vulkan_window.get(), widget);
wrapper->resize(m_default_width, m_default_height);
wrapper->show();
2) Добавлены следующие флаги
m_label->setAttribute(Qt::WA_NoSystemBackground);
m_label->setAttribute(Qt::WA_TranslucentBackground);
m_label->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::CoverWindow);
Метка отображается в верхней части окна вулкана, но не соответствует положению окна вулкана
3) Попытка добавить QWidget :: createWindowContainerвиджета VulkanWindow и QLabel для одного родительского виджета с помощью QGridLayout или QVBoxLayout.
Не действует
4) Создайте QVulkanWindow с родительским newwidget-> windowHandle () с последующим созданием виджета QLabel на newwidget parent
5) Создать новое QWindow с родительским QVulkanWindow.После этого создайте виджет из QWindow и создайте дочерний QLabel для упомянутого виджета.
winapi создает кнопку в верхней части окна vulkan.Но невозможно создавать полупрозрачные виджеты
m_hwndButton = CreateWindowExW(
0L,
L"BUTTON", // Predefined class; Unicode assumed
L"VR", // Button text
WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, // Styles
10, // x position
10, // y position
50, // Button width
50, // Button height
(HWND)m_vulkan_window->winId(), // Parent window
NULL, // No menu.
(HINSTANCE)GetWindowLong((HWND)m_vulkan_window->winId(), -6), //instance
NULL); // Pointer not needed.
ShowWindow(m_hwndButton, SW_SHOW);
UpdateWindow(m_hwndButton);