カスタムOpenGLシーン(QGLWidgetでラップ)を実装しようとしていますが、スライドバーやボタンなどのQTコントロールを使用しています。私はメインウィジェットをQGLウィジェットにしました。これはQWidgetsを子として持っています。子ウィジェットが機能しているように見えます(プルダウンメニューをクリックするとオプションが表示されます)が、ウィジェットは描画に失敗します(白い四角形が表示されます)。私の子供のウィジェットの基本クラスをQWidgetからQGLWidgetに変更したところ、QPainterはまだ動作しませんでしたが、QT GUIのものはまだ表示されていません...グラフィックスのQGLWidgetとGUIのQT
QGLWidgetはQWidgetsを子として持つことはできません...それについてはわからないし、私はあきらめるつもりもない。ところで、私はOpenGLのシーンを描画するために可視化ライブラリを使用していますが、それは単なるOpenGLラッパーです...
問題の可能性がある手掛かりはありますか?また、GQLWidgetにサブウィジェットを追加すると、何らかの理由でキーイベントが処理されなくなります。
更新: ウィジェットとレイアウトのさまざまな組み合わせを試しました。 QGLWidgetは何かの上に描画されるようです。私はraise()を使って、ウィジェットのZ深度を整理しようと試みましたが、役に立たなかった。 overlayGL()はOpenGLウィジェットの上に描画する唯一の方法ですか?
更新2 数ヶ月の試行錯誤の末、QTに関連することが分かった。 QGLWidgetが別のQGLWidgetの上に描画されるたびに、最初のbackground()関数は呼び出されません。ボタンはそこにあり、クリックすることができますが、描かれません。私の回避策は、QPainterを使ってすべてを自分で描くことでした。好奇心を持っていたのは、QPainter :: startNativePainting()を使って描画する必要があるということです。 QGLWidgetがペイントデバイスであるときはいつでも、startNativePainting()を呼び出すためにQPainterでstart()をオーバーロードすると予想されます...
QPainterはOpenGLコンテキストをCHANGEと呼んでいます。 QPainter(私の場合はVisualization Library)と協力して別のツールがあれば、それらのうちの1つがクラッシュする可能性があります(私の場合、各フレームの前にコンテキスト状態がクリアされているかどうかを確認するVL)。
メインウィンドウとして非GLウィジェットを、子ウィジェットとしてGLウィジェットを作成できませんか?したがって、あなたのウィンドウに必要な他のコントロールは、子供ではなくGLウィンドウの兄弟やいとこです。 –
私はまずそれを試しました - それはGL_SRC_ALPHAの問題について不平を言って失敗します。 QGLWidgetはVL [link](http://www.visualizationlibrary.org/)によって構築され、非常に複雑でデバッグが難しいです... –
QWidgetのオブジェクトをQGLWidgetの上に浮動させようとしていますか? – cmannett85