2011-10-22 9 views
0

QtでOpenGLベースのプログラムのUIを向上させようとしています。私はそのプログラムを変更できるので、ウィンドウIDを取得するのは難しくありません。だから私はそれをQWidgetに埋め込むことは良い考えだと思う。しかし、期待どおりに動作しません:XReparentWindowでQWidgetにOpenGLウィンドウを埋め込むことができません

XReparentWindowが呼び出された後、OpenGLウィンドウの装飾は失われますが、位置は変更されませんでした。

XConfigureWindowを使用して親に対して位置を(0, 0)に移動すると、画面の左上隅に移動しますが、QWidgetは移動しません。

再作成後、3番目のウィンドウがQWidgetをカバーできますが、OpenGLウィンドウをカバーすることはできません。

X11は操作中にエラーが発生しなかったことを報告しました。

OpenGLウィンドウの親が私のQWidgetではなくルートウィンドウに設定されているようです。正しく動作させるにはどうすればよいですか?

答えて

1

現在のOpenGLウィンドウをOpenGLコンテキストを提供するQGLWidgetで置き換えることができ、Qtウィンドウに直接配置することができます。

QtがXReparentWindowをサポートしているかどうかわかりません。ドキュメントはそれを言うとは思われないので、おそらくそれを使用することは悪い考えです。代わりにQWidget::create()を試すことができます。

+0

ありがとうございます。それがまさに私が探しているものです。私は 'create()'メソッドがあることさえ知りませんでした。 – hpsMouse

関連する問題