次のような、これに似たいくつかの質問を見つけました。
しかし、ほとんどの例と回答は、1 つの GUI スレッドと 1 つのデータ処理スレッドに関するものでした。
私のシナリオを説明しましょう。
私は3つのクラスを持っています:
- class MainWindow (クラスから継承され
QMainWindow
、メイン GUI として機能) - クラス LogInWidget (クラスから継承
QWidget
。このクラスは、すべてのユーザー名/パスワード フィールド + プログレス バーで構成されます。下の画像を参照してください)
3.class DataTableWidget (QWidget
数十万のデータを表示するテーブルからなる class.consist から継承)
このプログラムは、ユーザーが 経由でプログラムにログインすると、LogInWidget
によって表示されるすべてのデータを見ることができるように設計されていDataTableWidget
ます。
.setCentralWidget
メソッドを使用して と の両方を設定LogInWidget
しDataTableWidget
ます(つまり、ユーザーパスワードが正しい場合は、使用します
table = DataTableWidget ()
self.setCentralWidget(table)
テーブルを表示します。
私の問題は次のとおりです。ユーザーがログインすると、テーブルを介して表示するデータエントリが非常に多いため、データテーブルを表示する前に大きな GUI がフリーズします。
LogInWidget
したがって、プログラムがテーブルのロードを完了する前に、ビジー プログレス バーを (my に) 表示したいと思います。
を使って実現しようと思ったのQthread
ですが、プログレスバーの表示DataTableWidget
とcentralwidgetの作成・設定の両方がGUIのタスクなので、どのようにアプローチすればよいでしょうか?