問題タブ [qtimer]

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 投票する
3 に答える
464 参照

c++ - どこからでもQtプログラムを終了するには?

私の例:


コメントの場所で、私はやろうとしました: qApp->exit() と qApp->quit() と this->close() (ただし、「これ」は表示されておらず、もちろん close() は機能していません)。コードの任意の場所からアプリを終了するにはどうすればよいですか?


コード全体:
main.cpp


メインウィンドウ.h


メインウィンドウ.cpp

ConnectionForm は、GUI を備えた単なる QDialog であり、追加のコードはありません。

0 投票する
2 に答える
554 参照

c++ - ボタンを押した後にバックグラウンドループを停止するには?

私のプログラムでは、ウィンドウを開いて大きなループを実行します。で進行状況を表示しますQTextEdit。大きなループを止めるキャンセルボタンを追加しました。

したがって、ウィンドウコンストラクターで、次のようなメソッドを実行します。

したがって、停止ボタンをクリックすると、スロットが実行されます

その方法の問題はprocessEvents()、実行時間が少し遅くなりすぎることです..しかし、おそらくそれは避けられない..

シグナルとスロットで試してみたかったのですが、押された停止ボタンをループに接続する方法が思いつかないようです。

または、信号とスロットかどうかにかかわらず、誰かがこれを達成するためのより良い方法を持っているのでしょうか?

編集

このスレッドのアドバイスに従って、ワーカー/スレッドのシナリオができました。だから私はウィンドウコンストラクターにいます

これはうまくいくようです。しかし、どうすれば now を導入できQTimerますか?

QTimerをスレッドのstart()関数に接続する必要がありますか

または、スレッドをQTimerstart()関数に接続する必要がありますか?

またはどちらでもない...しかし、どうやって?

0 投票する
2 に答える
1033 参照

c++ - スロットへのいくつかの QTimers 呼び出しをキューに入れる

私は、いくつかの処理を開始する (ジョブを実行するスレッドを開始する) トリガー関数を呼び出す必要があるライブラリを使用しており、すぐに戻ります。その後、処理が終了すると、シグナルが発行されます。

これは、さまざまなパラメータに基づいて定期的に行う必要があります。処理中にトリガー関数への他の呼び出しを実行してはならないため、何らかの方法でそれらをキューに入れる必要があります。QEventLoop (「ループ」) を使用することを考えましたが、今のところ運がありません。

このコードを見てください:

問題は、処理中に loop.exec() が呼び出されると、次のメッセージが表示されることです。

私が意図したことを行う正しい方法は何ですか?

前もって感謝します。

0 投票する
2 に答える
1398 参照

c++ - ワーカースレッドの QTimer

Worker使用して配置されている別のスレッドで何らかの作業を行うクラスがありmoveToThread()ます。メソッド内では、タスクにかかる推定時間に基づいて、進行状況の更新を発行することになっているWorker::doWork()も作成します。QTimer

次に例を示します。

現在、これは意図したとおりに機能しません。スロットは、作業が完了した後updateProgress()にのみ呼び出され始めます。

0 投票する
2 に答える
281 参照

c++ - QTimerの仕組み

timerが のオブジェクトで、タイマーQTimerの間隔が でiInterval、タイマーのタイムアウト信号がスロット に接続されているとしsltTimeout()ます。

iInterval実行にかかる時間よりも小さい場合はどうなるかを考えていsltTimeout()ました。その結果、複数のスレッドが実行sltTimeout()されますか? その場合、オブジェクトへの非同期アクセスで問題が発生する可能性があります。

誰でもそれを明確にできますか?

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

c++ - QTimer: タイマーは QThread で開始されたスレッドでのみ使用できます

私と同じ問題を抱えている人を見たことがありますが、解決策はうまくいきません。

これが私のコードです:

10ミリ秒ごとにUDPフレームを送信するプログラムを書いています。私のプログラムがどのように動作するかは次のとおりです。

私は持っていclient classます:

次に、これを私の中で使用しますmain

タイマーが機能しないのはなぜですか? 他の場所で起動する必要がありますか?

ありがとう。