Заставить QWidget Child иметь собственную оконную ручку
Я пытаюсь создать небольшое приложение, используя Qt. Что я хочу сделать, это отобразить в виджете дока 3D-интерфейс, используя DirectX11
другие виджеты в QMainWindow
будет иметь свойства для изменения поведения того, что отображается в DX11
,
Проблема, с которой я сталкиваюсь, заключается в том, что, когда я добавляю QDockWidget
в QMainWindow
, dockWidgetContents
функция windowHandle
возвращается NULL
,
Я использую пример из Get HWND для Windows с Qt5 (из WId), чтобы получить HWND
, Но если функция вернуть NULL
он поднимется и получит HWND
из QMainWindow
,
Есть ли способ заставить QWidget
иметь свою ручку окна?
Спасибо за любой совет!
1 ответ
Да. У вас есть несколько вариантов для этого. См. Тему " Нативные виджеты против чужих виджетов" в документации по классу QWidget.
- Используйте QT_USE_NATIVE_WINDOWS=1 в вашей среде.
- Установите атрибут Qt::AA_NativeWindows в вашем приложении. Все виджеты будут родными виджетами.
- Установите атрибут Qt::WA_NativeWindow для виджетов: сам виджет и все его предки станут нативными (если не установлен Qt::WA_DontCreateNativeAncestors).
- Вызовите QWidget::winId для принудительного применения собственного окна (это подразумевает 3).
- Установите атрибут Qt::WA_PaintOnScreen для принудительного применения собственного окна (это подразумевает 3).