私はこれに何時間も取り組んでいますが、それを理解することも、オンラインで役立つヘルプを見つけることもできません. 基本的に私が達成しようとしていることの要点は、ボタンとQTextBrowser
. ボタンを押すと、メッセージが表示され、このメッセージが 10 秒ごとに出力され続けます。
10 秒ごとにメッセージを表示するタイマーを用意するのは理にかなっているので、QTimer を使用すると考えました。これを `buttonClicked() SLOT に最初に実装したとき、プログラムがフリーズしました。オンラインで解決策を探したところ、QApplication::processEvents() が見つかりました。
したがって、基本的に私の機能では、次のようなものがありました。
while(1)
{
QTimer *timer;
connect(...) //omitted parameters for this example
timer.start(10000);
ui->diplay->append("Message");
while(timer.isActive())
{
QApplication::processEvents()
}
}
timer.isActive() while ループから抜け出すだろうと考えましたが、単にそこにとどまるわけではありません。
したがって、これはスレッドの問題であると考えました。だから私は QThreads を使用する方法を考え出しましたが、まだ動作させることができません。基本的に、タイマーを使用してスレッドを作成し、スレッドがタイマーに開始を指示すると、プログラムが終了し、コンソールに「プログラムが予期せず終了しました」と表示されます。
これを行うには簡単な方法が必要ですが、Qt での私の実績は常に次のとおりです。