私はいくつかのタブを持つQwidgetを持っています。いずれかのタブで、ボタンをクリックすると、データの処理が開始され、進行状況バーが更新されます。QTで進行状況バーが更新されている間にタブを変更する方法
このプロセスが実行されている間にタブを変更したいと考えていますが、現在のところそうすることはできません。何か案が?
私はいくつかのタブを持つQwidgetを持っています。いずれかのタブで、ボタンをクリックすると、データの処理が開始され、進行状況バーが更新されます。QTで進行状況バーが更新されている間にタブを変更する方法
このプロセスが実行されている間にタブを変更したいと考えていますが、現在のところそうすることはできません。何か案が?
(1)モーダル1のモードレスプログレスダイアログを使用する必要があります。実際には、メインイベントループは、ユーザーの操作を可能にするコントロールを取得する必要があります。 http://www.bogotobogo.com/Qt/Qt5_QProgressDialog_Modal_Modeless_QTimer.php
(2)データ処理関数をワーカースレッドに配置し、そこからメインUIスレッドへの進捗ダイアログの更新を呼び出す必要があります。そうすれば、タスクはUIをブロックしないので、(タブを変更するような)ウィンドウとやり取りすることができます。
QFuture
、QtConcurrent::run()
:別のスレッドでタスクを実行します。QFutureWatcher
:ワーカースレッドで実行中のタスクの進行状況を監視するのに役立ちます。 例:ロジック以下 http://doc.qt.io/qt-5/qtconcurrent-progressdialog-example.htmlはあなたを助けるかもしれません。
スタート進捗状況(スレッド):スレッドを起動し、
停止を処理しないあなたは上記のロジック
アプリケーションのスクリーンショットは言っ続くサンプルアプリケーションhereを得ることができます
プロセス(スレッド):スレッドを停止する