プロセスをより効率的にするために、アプリケーションを複数のスレッドで実行しようとしています。Qt の Web サイトで、QFuture
役立つテンプレート クラスを見つけました。私は彼らの例のように使用しようとしています。以下は私のクラス宣言/定義の一部です。
class PreferencesWindow {
public:
PreferencesWindow(QWidget *parent = 0);
public slots:
void dbsChanged();
}
PreferencesWindow::PreferencesWindow(QWidget *parent = 0) {
QFuture<void> fns = run(dbsChanged);
}
実行しようとすると、(この 1 行から) 次のような 48 個のエラーが発生します。
error C2780: 'QFuture<FunctionObject::result_type> QtConcurrent::run(FunctionObject *,const Arg1 &)' : expects 2 arguments - 1 provided
どこが間違っていますか?別のスレッドでそのスロットを実行するにはどうすればよいですか?
なぜ私はこれが欲しいのですか? このメソッドの実行には最大 30 秒かかる場合があります (一部のデータベース設定がチェックされます)。この間、GUI はフリーズし、ユーザー エクスペリエンスが低下するため、これは良い解決策だと思います。