GUI アプリケーションで実行するのに非常に時間のかかるタスクがいくつかあり、GUI がフリーズしないようにそれらをスレッド化したい..
そのために、スレッドを作成し、タイマーを開始しました。スレッドの「実行」メソッドで、timeout() メソッドをタイマーから、並列化したい時間のかかる関数に接続しましたが、シグナルが呼び出されると、代わりに時間のかかる関数がメイン スレッドで呼び出されます。私が作成したものの。
例のために簡略化された私のコードは次のとおりです。
void MyThread::run()
{
m_pTimer = new QTimer()
connect(m_pTimer, SIGNAL(timeout()), this, SLOT(timeConsumingMethod()));
m_pTimer->start(x);
}
「timeConsumingMethod」、MyThread::run()、およびメインに静的メソッド QThread::currentThread() の値を出力しましたが、その値はメインのものと同じです。
関数を別のスレッドで実行するにはどうすればよいですか? さらに重要なのは、なぜ私のコードが間違っているのですか?