FAQ Qt
FAQ QtConsultez toutes les FAQ
Nombre d'auteurs : 26, nombre de questions : 298, dernière mise à jour : 15 juin 2021
Les timers sont gérés avec Qt à l'aide de la classe QTimer. Cette classe est relativement simple à utiliser grâce aux méthodes suivantes :
- intinterval() const : permet de connaître l'intervalle de temps (en ms) entre chaque déclenchement du timer ;
- boolisActive() const : permet de déterminer si le timer est activé ou pas ;
- boolisSingleShot() const : permet de déterminer si le timer est en mode de déclenchement unique ou pas ;
- voidsetInterval( int msec ) : permet de paramétrer l'intervalle (en ms) entre deux déclenchements successifs du timer ;
- voidsetSingleShot( bool singleShot ) : permet de mettre le timer en mode déclenchement unique ;
- voidstart() : permet de démarrer le timer ;
- voidstop () : permet d'arrêter le timer.
Remarque 1 : si vous souhaitez utiliser un timer en mode "single shot"
QTimer possède une méthode statique
QTimer::singleShot(),
qui peut vous être très utile.
Remarque 2 : un timer n'est jamais très précis et est fortement dépendant de l'OS. Si vous souhaitez être précis
à la milliseconde, ce n'est pas la solution à utiliser.
La classe QTime permet de récupérer l'heure du système facilement à l'aide de la méthode statique suivante :
QTimeQTime::currentTime() permet de récupérer un objet QTime initialisé à l'heure courante.
//L'objet time est initialisé à l'heure courante
QTime
time =
QTime
::
currentTime();
QTime fournit la méthode elapsed() qui permet de connaître le temps écoulé (en ms) depuis l'exécution de la méthode start() ou restart().
QTime
time;
time.start();
ma_fonction();
// millisecondes contient le nombre de millisecondes entre l'appel à la fonction start()
// et l'appel 0 la fonction elapsed()
int
millisecondes =
time.elapsed();
Remarque : si vous voulez vraiment mesurer précisément le temps d'exécution de certaines portions de votre code et faire du benchmarking de votre application, alors il est préférable de vous tourner vers QTestLib, qui est faite pour ça.
QDate (et QDateTime, qui contient en plus QTime) permet de manipuler la date.
Qt fournit la méthode toString(QString& format) pour convertir en chaîne de caractères les données contenues au sein d'un QDate. L'argument format permet de définir le format de la chaîne de caractères retournée. Cet argument peut se composer des symboles suivants :
- d : le numéro du jour (1 à 31) ;
- dd : le numéro du jour écrit avec deux chiffres (01 à 31) ;
- ddd : l'abréviation du jour ('Lun' à 'Dim'), utilise QDate::shortDayName() ;
- dddd : le jour ('Lundi' à 'Dimanche'), utilise QDate::longDayName() ;
- M : le numéro du mois (1 à 12) ;
- MM : le numéro du mois écrit avec deux chiffres (01 à 12) ;
- MMM : l'abréviation du mois ('Jan' à 'Dec'), utilise QDate::shortMonthName() ;
- MMMM : le mois ('Janvier' à 'Décembre'), utilise QDate::longMonthName() ;
- yy : les deux derniers chiffres de l'année (00 à 99) ;
- yyyy : l'année en quatre chiffres (peut être négatif, - est alors ajouté).
Note : les résultats retournés en toutes lettres par les paramètres ddd, dddd, MMM et MMMM dépendent de la langue du système.
La date contenue par QDate date est le 20 juillet 1969.
date.toString("dd.MM.yyyy"
) // Retourne "20.07.1969"
date.toString("ddd d MMMM yy"
) // Retourne "dimanche 20 Juillet 69"
date.toString("'Nous sommes ' dddd"
) // Retourne "Nous sommes dimanche"
Comme nous pouvons le constater avec le troisième exemple, il est possible d'ajouter du texte personnalisé dans l'argument de la méthode toString(). Ce texte doit être entouré par des ' (apostrophe) et sera restitué dans le résultat, à la position indiquée.
Pour afficher le caractère ' (apostrophe), il faut écrire '' (deux apostrophes consécutives).
Lien : Comment convertir un QTime en QString ?
Lien : Comment choisir la langue dans laquelle afficher le QString ?
QTime (et QDateTime, qui contient en plus QDate) permet de manipuler l'heure.
Qt fournit la méthode toString(QString& format) pour convertir en chaîne de caractères les données contenues au sein d'un QTime. L'argument format permet de définir le format de la chaîne de caractères retournée. Cet argument peut se composer des symboles suivants :
- h : l'heure (0 à 23 ou 1 à 12 si affichage en AM/PM) ;
- hh : l'heure sur deux chiffres (00 à 23 ou 01 à 12 si affichage en AM/PM) ;
- H : l'heure (0 à 23, même si affichage en AM/PM) ;
- HH : l'heure sur deux chiffres (00 à 23, même si affichage en AM/PM) ;
- m : la minute (0 à 59) ;
- mm : la minute en deux chiffres (00 à 59) ;
- s : la seconde (0 à 59) ;
- ss : la seconde en deux chiffres (00 à 59) ;
- z : la milliseconde (0 à 999) ;
- zzz : la milliseconde en trois chiffres (000 à 999) ;
- AP ou A : affichage en AM/PM. Affiche AM ou PM à la place de AP ;
- ap ou a : affichage en am/pm. Affiche am ou pm à la place de ap.
L'heure contenue par QTime heure est 14:13:09.042 (14 heures, 13 minutes, 9 secondes et 42 millièmes de seconde).
heure.toString("hh:mm:ss.zzz"
) // Retourne "14:13:09.042"
heure.toString("h:m:s ap"
) // Retourne "2:13:9 pm"
heure.toString("H:m:s a"
) // Retourne "14:13:9 pm"
Lien : Comment convertir un QDate en QString ?
Lien : Comment choisir la langue dans laquelle afficher le QString ?
Pour choisir la langue d'affichage, on peut utiliser la classe QLocale et ses différentes implémentations de la méthode toString(). Voici celles qui nous intéressent :
- QString QLocale::toString ( const QDate & date, const QString & format ) const
- QString QLocale::toString ( const QTime & time, const QString & format ) const
Il est possible de ne pas définir de format, auquel cas Qt affichera la date au format classique du pays.
On suppose que la date est définie dans la variable QDate date. On choisit le format d'écriture ddd d MMMM yy.
QLocale
francais("fr_FR"
);
francais.toString(date, "ddd d MMMM yy"
); //Affiche la date en français
QLocale
anglaisUS("en_US"
);
anglaisUS.toString(date, "ddd d MMMM yy"
); //Affiche la date en anglais (États-Unis).
QLocale
anglaisGB("en_GB"
);
anglaisGB.toString(date, "ddd d MMMM yy"
); //Affiche la date en anglais (Royaume-Uni).
QLocale
coreen("ko"
);
coreen.toString(date, "ddd d MMMM yy"
); //Affiche la date en coréen
QLocale
allemandSuisse("de_CH"
);
allemandSuisse.toString(date, "ddd d MMMM yy"
); //Affiche la date en allemand (Suisse)
Lien : Comment convertir un QDate en QString ?
Lien : Comment convertir un QTime en QString ?