ボタン用のスロットがあり、スレッドを開始する単純なフォーム UI があります。
void MainWindow::LoadImage()
{
aThread->run();
}
run() メソッドは次のようになります。
void CameraThread::run()
{
qDebug("Staring Thread");
while(1)
{
qDebug("ping");
QThread::sleep(1);
}
}
LoadImage() を呼び出すボタンをクリックすると、UI が応答しなくなります。デバッグ出力として「ping」メッセージが定期的に表示されますが、UI がハングし、何も応答しません。スレッドが個別に実行されないのはなぜですか? パブリック QThread として派生した CameraThread は、Ubuntu 10.04 (x86) リポジトリの QT ライブラリと QT Creator で gcc バージョン 4.4.3 (Ubuntu 4.4.3-4ubuntu5) を使用しています。