非同期でウィジェットを作成し、それをメインスレッドのダイアログに割り当てたいと思います。ウィジェットを作成する関数があります。
shared_ptr<QTableWidget> createTable() {
auto table = make_shared<QTableWidget>()
// ... add some items to the table
return table;
}
この関数を同期的に呼び出すと、すべてが期待どおりに機能します。問題は、この関数を非同期で呼び出す場合です。
auto futureWidget = QtConcurrent::run(createWidget);
私はQFutureWatcher::finished()
signalを使用し、ウィジェットの作成が完了したら、そのウィジェットをメイン/GUIスレッドのダイアログに追加しようとします。
問題は、テーブルにアイテムを追加すると、SIGSEGでクラッシュすることがあるということです。完了すると、作成されたウィジェットが表示されない場合があります。また、GUIスレッドの外部でのpixmapの使用に関する標準出力には多くの警告があります。
Qtの別のスレッドでウィジェットを作成することはできませんか?可能であれば、どのようにそれを行うのですか?