私はQtでUIアプリケーションを使用しています。何千もの結果を返す大規模なSQLクエリを実行する関数がいくつかあります。Qtプログラムがハングする(応答しない)関数が終了してから再び動作するまで
このクエリを実行するボタンをクリックすると、UIウィンドウがただちに「応答しません」に変わりますが、コンソール出力からすべてが実際にバックグラウンドで実行されていることがわかります。関数が終了すると、データが期待通りに表示され、UIが再び応答して完全に機能します。
これは、この機能が多数の結果のために何千回もループしていることが原因であることがわかりましたが、私は、検索が進むにつれて進行するローディングバーを入れてもらいたいと考えていました。プログラムのように見えるようにウィンドウをロックするだけでクラッシュしました。 AFAIK私はメモリリークを持っていないので、誰もが何か提案を持っていますか?
ああも、私がクリックしたときに、そのボタンのタスクマネージャにのみ、このプロセスに使用されているメモリのMBのカップルとプロセッサは、アプリケーションでは
あなたは_threading_について読んでください。 –
'threading'であなた自身を知ってください... –
また、あなたの機能を実行している間は、GUIを駆動するイベントループ全体が実行されないので、プログレスバーを表示するだけでは役に立ちません。 Qtを使用すると、時間がかかることがある作業を行うときにワーカースレッドを開始するのは簡単です。ワーカースレッドは、進捗バーを更新するための信号をGUIに簡単に送信することができます。 –