Domanda

Sto sviluppando un lettore video usando QmediaPlayer. Quando impostare un'etichetta per mostrare la durata di un video visualizza il valore errato.

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

Se suono un video in cui la durata è 7 minuti di 24 secondi Etichetta mostra "05:37:24" Ci sono 5 ore e 30 minuti vengono aggiunte all'etichetta e non riesco a trovare una ragione. Per favore aiutami su questo ragazzi ...

È stato utile?

Soluzione

Bene, ho trovato un altro modo per farlo.Un po 'lungo ma funziona perfettamente.

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());
.

Qui ho usato per qint64 come tipo variabile, quindi non ho bisogno di convertire il galleggiante per intero (ho usato il valore del galleggiante nella mia domanda). Ho usato i valori dei rimanenti per impostare secondi, minuti e ore. Esempio: in ore, ho riscontrato durata in 3600000. che significa ore (60) * minuti (60) * millisecondi (1000).Il che mi dà ore esatte e poi prendi il resto di 24 (giorni) perché per assicurarti che non ci siano giorni.(che non è davvero possibile per un video ma per essere sicuro).

Quindi convertendoli in qtime (perché ho bisogno di questo in formato "hh: mm: ss").Successivamente convertire in stringa e visualizzata utilizzando un'etichetta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top