2017-10-09 20 views
1

こんにちは、エラーメッセージに関する質問があります。Qt C++でビジー状態のときにエラーメッセージが表示されるのを防ぐには

私にはOKボタンとキャンセルボタンを含むいくつかのボタンがあるウィンドウがあります。私のOKボタンは、いくつかのチャートシリーズを移動するプログラムを実行するので、ファイルから多くのデータを読み込み、これらの値をシフトする必要があります。 Cancelボタンはこの操作をキャンセルします。計算は、コードの小さな部分に分割することはできません。

これは少量のデータに対してはうまく機能しますが、大きなデータセットで使用すると、のプログラムは、それが壊れた場合のように動作します()。それにもかかわらず、すべての時間が正常に戻った後、計算が行われます。

私は次のように `tの2つのことがあります。

  • 1)私は一人でプログラムを終了すると、プログラムがに私の窓のheaderlineを変更する....(慧音Rückmeldung)手段は、応答なし。

    enter image description here

    計算の終了後にテキスト...(慧音Rückmeldung)ヘッダに消失し、すべてが正常に戻っています。計算を実行している間、私は私の窓に「キャンセル」ボタンを押ししようとすると

  • 2)、追加のウィンドウが表示されます。そこ

    enter image description here

    再び、私は一人でプログラムを離れるとき計算が終了し、このウィンドウが消えます(私のウィンドウのヘッダーにある(keineRückmeldung))。そしてすべてが正常に戻ります。

問題2を解決するために、私は「キャンセル」ボタンを無効にしようとしましたが、これは役に立ちません。とにかくキャンセルボタンが動くスロット。

私の質問は次のとおりです:ユーザーにこれらのエラーメッセージが表示されないようにするために、プログラムを表示しないようにする方法はありますか?

+0

生成している連続グラフですか?はいの場合は、グラフを描画する必要があるときにタイマーを使用してトリガーすることができます。あるいは、CPU全体を消費する計算部分だけであれば、それを他のスレッドに移動すると便利です。 –

+1

スレッドを使用したくない場合は、時々 'processEvents()'を呼び出すことができます。このような関数を持つクラスがいくつかあります。基本的な使い方は 'QCoreApplication'です。 –

+0

OP、更新情報がありますか? – payloc

答えて

1

は高価な計算タスクのためのQThreadを使用することを検討していただきありがとうございます。あるいは、QConcurrentRunQFutureのような他のビルトインマルチスレッドユーティリティを使用することもできます。

これで、バックグラウンド関数の状態を取得して読み込みウィンドウを表示したり、その間に他の操作を実行することができます。

関連する問題