QML TIMER - Comment améliorer la précision?
-
26-12-2019 - |
Question
Je développe un métronome QML.J'ai utilisé une minuterie avec intervalle 60000 / battements par minute.Cependant, ce n'est pas vraiment précis.Comment puis-je améliorer la précision?Devrais-je utiliser une minuterie ou y a-t-il une meilleure solution?
La solution
Le problème fondamental avec QTIMER qu'il utilise la boucle d'événement QT pour le moment chronométrage.Malheureusement, il ne peut pas être suffisamment précis, intrinsèquement.La latence des notifications et tout ce que dans la boucle d'événement se met à la hauteur.
Vous auriez besoin d'envisager une minuterie qui ne dépend pas fortement de la boucle d'événement QT, comme QueryPerformanceCounter()
sur Windows.C'est ainsi que nous arrivons au domaine de QLapsedTimer.
Ainsi, j'utiliserais qelapsedTimer à cet effet.
Le message suivant dispose d'une classe personnalisée mise en œuvre à cet effet tel qu'il semble.Vous pourrez peut-être le prendre tel quel, puis le modifier pour répondre à votre besoin encore mieux si nécessaire.