問題タブ [qtconcurrent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
419 参照

c++ - QtConcurrent::map はパラメーターを受け入れません

QtConcurrent::map で関数を実行したいのですが、常にエラーが発生します... Mainwindow: には 2 つの関数がありますon_listWidget_itemClicked and _fillTreeWithList(QStringList selectedListWidget)。関数on_listWidget_itemClicked should use map with _fillTreeWithList.

私のコード:

ヘッダ:

Cpp:

エラー:

私の問題を解決する方法を知っている人はいますか?

0 投票する
1 に答える
2469 参照

qt - QtConcurrent::run はメインスレッドでどのように巻き上げられますか?

アプリケーションに QFuture ベースの非同期ネットワーク ファサードを構築しました。大まかに次のように動作します。

次のことをQTimer行うメインスレッドで呼び出しをトリガーする があります (明らかに単純化されています)。

私の仮定は、waitForFinished()バックグラウンド スレッドがネットワーク リクエストを実行している間、メイン スレッドをブロックすることでした。代わりに、qFatalエラーが発生します。

スタック トレースではwaitForFinished()、メイン スレッドに表示されますが、ブロックされる代わりに次のように表示されます (下から上に読む)。

したがって、 が値を取得するのを待つのではなくQFuture、メイン スレッドで並行タスクと思われるタスクが発行されます。これにより、get()上で概説した関数が呼び出され、QEventLoop. その間、QTimer再び火災が発生し、私は上から主張を受け取ります。

私は何か間違ったことをしていますか、それともQtConcurrent::run制御がメインスレッドに戻る可能性があるのは完全に有効ですか?

=== 更新 1

@peppe: 実行されるラムダは、単純に HTTP GET を実行し、JSON 応答を解析してSomeTypeオブジェクトに生成します。経由でアクセスされる結果QFuture

=== アップデート 2

どうやらこれは設計によるものです。qfutureinterface.cppQt 5.4.0 行 293-295 から:

0 投票する
1 に答える
67 参照

qt - Qt、データベース呼び出し後も GUI をレスポンシブに保つ

ユーザーがボタンをクリックすると、データベース アクセスを伴う (遅い) 操作が実行されるとします。問題は、操作を直接呼び出すと、GUI が応答しなくなることです。

また、シグナル/スロットを試し、obj にリクエストを発行してから、彼の応答 (別のシグナル) を待ちました。とにかく、結果は同じで、応答しない GUI でした。

この問題へのアプローチはどうあるべきですか?

0 投票する
0 に答える
170 参照

c++ - オブジェクト map(*it) の呼び出しに一致する関数がありません。

関数を複数回呼び出しようとしていますが、それらを使用して並列化しますQtConcurrent::mapped

しかし、私はエラーを克服することができません:

コードは次のとおりです。

0 投票する
0 に答える
180 参照

qt - Qfuture は null ポインタで構成されています

私のQtマルチスレッドプログラムは、到達するとクラッシュします:

try-catch ブロックを試しましたが、うまくいきませんでした。

nullかどうかを確認するにはどうすればよいですか?

その行でコードにステップインすると、デバッガーは次のように通知します。