Question

Je développe un lecteur vidéo utilisant QMediaPlayer. Lorsque j'ai défini une étiquette pour afficher la durée d'une vidéo, il affiche une mauvaise valeur.

float duration = mediaPlayer.duration() / 1000.0f;
ui->lblDuration->setText(QDateTime::fromTime_t(duration).toString("hh:mm:ss"));

Si je joue une vidéo où la durée est de 7 minutes 24 secondes, étiquette "05:37:24" Il y a 5 heures et 30 minutes sont ajoutés à l'étiquette et je ne trouve pas de raison. S'il vous plaît aidez-moi sur ces gars ...

Était-ce utile?

La solution

Eh bien, j'ai trouvé une autre façon de faire cela.Un peu longue mais fonctionne parfaitement.

qint64 duration = mediaPlayer.duration();

int seconds = (duration/1000) % 60;
int minutes = (duration/60000) % 60;
int hours = (duration/3600000) % 24;

QTime time(hours, minutes,seconds);

ui->lblDuration->setText(time.toString());

Ici, j'ai utilisé ici Qint64 comme type de variable, donc je n'ai pas besoin de convertir du flotteur en entier (j'ai utilisé une valeur de flotteur dans ma question). J'ai utilisé des valeurs de restes pour définir des secondes, minutes et heures. Exemple: dans les heures, j'ai dévidé la durée en 3600000. Ce qui signifie des heures (60) * minutes (60) * millisecondes (1000).Ce qui me donne des heures exactes et ensuite obtenir le reste de 24 (jours) parce que pour vous assurer qu'il n'y a pas de jours.(ce qui n'est vraiment pas possible pour une vidéo mais pour s'assurer).

puis la convertir en qtime (parce que j'ai besoin de cela dans "HH: MM: SS" Format).Convertir ultérieurement en chaîne et affiché à l'aide d'une étiquette.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top