我正在尝试使用 Qt 创建一个小应用程序。我想要做的是使用DirectX11
在停靠窗口小部件中显示3D接口,QMainWindow
中的其他小部件将具有修改DX11
中显示的行为的属性。
我遇到的问题是,当我向QDockWidget
添加QMainWindow
时,dockWidgetContents
函数windowHandle
会返回NULL
。
我正在使用Get HWND on windows with Qt5 (from WId)中的示例来获取HWND
。但如果函数返回NULL
,它将会上升并获得HWND
的{{1}}。
有没有办法强迫QMainWindow
拥有自己的窗口句柄?
感谢您的任何建议!
答案 0 :(得分:3)
是。你有几个选择。请参阅QWidget class documentation中的原生窗口小部件与外部窗口小部件主题。
- 在您的环境中使用QT_USE_NATIVE_WINDOWS = 1。
- 在应用程序上设置Qt :: AA_NativeWindows属性。所有小部件都是本机小部件。
- 在小部件上设置Qt :: WA_NativeWindow属性:小部件本身及其所有祖先将成为本机(除非设置了Qt :: WA_DontCreateNativeAncestors)。
- 调用QWidget :: winId强制执行本机窗口(这意味着3)。
- 设置Qt :: WA_PaintOnScreen属性以强制执行本机窗口(这意味着3)。
醇>