2

Qt と OpenGL でプロジェクトを作成しました。

Qt では、paintGL() が繰り返し呼び出されていたので、その関数の外で値を変更し、update() を呼び出して、新しい画像を描画することができました。また、プログラムを起動するとすぐに initializeGL() が呼び出されたと思います。

今私の質問は:

別のプログラムで同じ機能が必要です。画像などを描画する必要はありません。アプリケーションが閉じないように、呼び出され続ける paintGL() のような関数を作成する方法があるかどうか疑問に思っていました。プログラムを実行し続ける while(true) ループを使用しようとしましたが、while ループのために GUI が非アクティブになりました。

できればスレッド以外のヒント。

ありがとう。

4

1 に答える 1

2

正確なメカニズムは、使用している GUI ツールキットによって異なります。一般に、アプリは、イベントがディスパッチされるように実行ループを常に処理する必要があります。whileそのため、ループで実行したときにアプリが応答しませんでした。

常に何かを再描画する必要がある場合、最も簡単な方法は、ウィンドウの作成時にタイマーを作成し、タイマーのイベント ハンドラーまたはコールバックでウィンドウを無効にして再描画を強制することです。その後、1 秒あたり 25 回など、タイマーの頻度でペイント ハンドラーを呼び出すことができます。

于 2009-11-27T10:28:55.623 に答える