2

Qtを使用して小さなアプリケーションを作成しようとしています。私がやりたいことは、 を使用してドック ウィジェットに 3D インターフェイスを表示することですDirectX11。 の他のウィジェットには、QMainWindowに表示されているものの動作を変更するプロパティがありますDX11

私が直面している問題は、 に を追加するQDockWidgetQMainWindowdockWidgetContents関数が をwindowHandle返すことNULLです。

Qt5 (WId から)を使用した Windows で Get HWND の例を使用して、HWND. しかし、関数が戻るNULLと、上に移動して の を取得しHWNDますQMainWindow

QWidgetに独自のウィンドウ ハンドルを持たせる方法はありますか?

アドバイスをありがとう!

4

1 に答える 1

3

はい。そのためのオプションがいくつかあります。QWidget クラスのドキュメントネイティブ ウィジェットとエイリアン ウィジェットのトピックを参照してください。

  1. お使いの環境で QT_USE_NATIVE_WINDOWS=1 を使用してください。
  2. アプリケーションで Qt::AA_NativeWindows 属性を設定します。すべてのウィジェットはネイティブ ウィジェットになります。
  3. ウィジェットに Qt::WA_NativeWindow 属性を設定します。ウィジェット自体とその祖先のすべてがネイティブになります (Qt::WA_DontCreateNativeAncestors が設定されていない場合)。
  4. QWidget::winId を呼び出して、ネイティブ ウィンドウを強制します (これは 3 を意味します)。
  5. Qt::WA_PaintOnScreen 属性を設定して、ネイティブ ウィンドウを強制します (これは 3 を意味します)。
于 2013-05-15T08:14:29.387 に答える