2014-07-04 4 views
0

Je suis sérieusement nouveau à ce truc QT. C'est peut-être une question stupide, mais je n'ai pas trouvé de réponse à cela. J'ai parcouru la documentation qt et cherché sur internet pour trouver la réponse à cette question. Ma question est que supposons qu'il existe une "variable entière" qui a une valeur de durée en secondes. J'ai besoin de celui à convertir en objet QTime pour retourner en QTime. Comment puis-je faire dans Qt Creator ?? ..comment convertir variable entière en objet QTime

int seekTime; 
int seconds = QTime().secsTo(duration); 
seekTime = seconds * bytePos/totalSize; 
return seekTime; 

je dois retourner cette variable seekTime comme un objet QTime comment puis-je faire cela?

merci à l'avance ..!

+1

Lorsque vous construisez votre objet QTime 'QTime :: QTime (int h, int m, int s = 0, int ms = 0)' mettre 0 pendant des heures et 0 pour les minutes .. – drescherjm

+0

@drescherjm Je pense que votre réponse est la solution au problème, mais pouvez-vous le décrire plus loin comment puis-je réellement faire ceci j'ai eu des erreurs quand j'ai essayé ceci. \ – Mlarnt90

+0

Non - ceci fonctionne seulement quand les secondes sont moins de 60 secondes - De Qt docu: "h doit être compris entre 0 et 23, m et s compris entre 0 et 59 et ms compris entre 0 et 999." – TWE

Répondre

1

Cela devrait fonctionner.

QTime t = QTime().addSecs(duration); 

Voici un petit programme que j'ai essayé:

#include <iostream> 

#include <QTime> 

int main() 
{ 
    int durationInSeconds = 40; 
    QTime t = QTime().addSecs(durationInSeconds); 
    std::cout << "h: " << t.hour() << ", m: " << t.minute() << " s: " << t.second() << ", ms: " << t.msec() << std::endl; 
    return 0; 
} 

Ceci est la sortie que je suis:

 
h: 0, m: 0 s: 40, ms: 0 

Mise à jour

A QTime peut également être construit pour représenter les secondes comme:

int durationInSeconds = 40; 
QTime t(0, 0, durationInSeconds); 

Mise à jour 2

La fonction secsTo peut être utilisée pour calculer la différence en secondes entre deux instances de QTime. Voici la documentation:

int QTime :: secsTo (const QTime & t) const

Renvoie le nombre de secondes de ce temps à t. Si t est plus tôt que ce temps, le nombre de secondes renvoyées est négatif.

Parce que QTime mesure le temps dans une journée et il y a 86400 secondes dans une journée, le résultat est toujours entre -86400 et 86400.

secsTo() ne prend pas en compte toutes les millisecondes.

Supposons que vous avez:

QTime t1(0, 1, 0: 
QTime t2(0, 0, 45); 

int secs = t2.secsTo(t1); // secs should be equal to 15. 
secs = t1.secsTo(t2);  // secs should be equal to -15. 

espoir qui clarifie le comportement prévu de QTime::secsTo un peu.

+0

non je n'ai pas besoin d'ajouter des secondes.il ajoute la durée à la T. J'ai juste besoin de convertir ce qui a déjà – Mlarnt90

+0

désolé pour votre effort mais pas i 'ai essayé that.its pas la réponse que je cherchais .. savez-vous comment cela peut-il faire en utilisant le constructeur par hasard ?? – Mlarnt90

+0

@ Mlarnt90, Voir ma mise à jour.Espérons que cela fonctionne pour vous –

Questions connexes