[解決済み] Qml タイマーが正しい間隔で起動しない
2022-02-18 07:37:14
質問
タイマーのQMLアプリを作成し、Timer qmlコンポーネントを使用しています。 間隔は1000ミリ秒(デフォルト)に設定されていますが、アプリにフォーカスがあるときだけ正常に動作しているようです。 バックグラウンドに置くと、毎回トリガーされないようで、そのためにアプリにいくつかのミスが発生しました。
ドキュメントでそれに関連するものを探したのですが、見つかりませんでした。 タイマーのコードはとてもシンプルです。
Timer {
id: timer
repeat: true
onTriggered: {msRemaining -= 1000; Core.secondsToText(type);}
}
どなたかそれについて、またそれを修正する方法についてご存知の方はいらっしゃいますか?
バージョンは? Qt 5.2 QML 2.0 OS X 10.9
解決するには?
QML Timer 要素は、アニメーション・タイマーと同期しています。アニメーションタイマーは通常60fpsに設定されているので、Timerの解像度はせいぜい16msとなります。また、Qt Quick 2では、アニメーションタイマーは画面の更新に同期しています(Qt Quick 1では16msにハードコードされています)。そのため、アプリがバックグラウンドで実行されると、画面更新が停止し、その結果、画面更新に同期していたタイマーが正しく動作しなくなると思われます。
タイマーを使って経過時間を表示したい場合、正確ではないので良いアイデアではありません。javascriptのDate()関数を使うとよいでしょう。
import QtQuick 2.0
Item {
id: root
width: 200; height: 230
property double startTime: 0
property int secondsElapsed: 0
function restartCounter() {
root.startTime = 0;
}
function timeChanged() {
if(root.startTime==0)
{
root.startTime = new Date().getTime(); //returns the number of milliseconds since the epoch (1970-01-01T00:00:00Z);
}
var currentTime = new Date().getTime();
root.secondsElapsed = (currentTime-startTime)/1000;
}
Timer {
id: elapsedTimer
interval: 1000;
running: true;
repeat: true;
onTriggered: root.timeChanged()
}
Text {
id: counterText
text: root.secondsElapsed
}
}
関連
-
[解決済み] QAbstractTableModelの内部にデータを設定する方法
-
[解決済み] QVariant::UserType 型の QVariant が期待された型であることを確認するにはどうすればよいですか?
-
[解決済み] Qtのフォームレイアウト機構を理解する
-
[解決済み] qmake: ''の Qt インストールが見つかりませんでした。
-
[解決済み] QMLイメージの表示サイズを調整する
-
[解決済み] QTextEditの内容を表示するQTextBrowserを持つにはどうしたらよいですか?
-
Qt signal and slot usage error : error: no matching function for call to ...... Qt signal and slot usage error : error: no matching function for call to ...... Qt signal and slot usage error: error
-
Qt: (クラス名)::connect()への呼び出しに一致する関数がない エラー概要
-
CMakeラーニングサマリー
-
[解決済み] Qtプログラムを終了する正しい方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] QVariant::UserType 型の QVariant が期待された型であることを確認するにはどうすればよいですか?
-
[解決済み] Qml タイマーが正しい間隔で起動しない
-
[解決済み] Qtのフォームレイアウト機構を理解する
-
[解決済み] QTextEditの内容を表示するQTextBrowserを持つにはどうしたらよいですか?
-
Qt signal and slot usage error : error: no matching function for call to ...... Qt signal and slot usage error : error: no matching function for call to ...... Qt signal and slot usage error: error
-
Qt: (クラス名)::connect()への呼び出しに一致する関数がない エラー概要
-
CMakeラーニングサマリー
-
[解決済み】Qt-Designerでレイアウトが自動拡張される。
-
[解決済み】QLabel: テキストと背景の色を設定する
-
[解決済み] Qtプログラムを終了する正しい方法は?