exact, merci ;)
Version imprimable
exact, merci ;)
En y réfléchissant...
pourquoi veut tu utiliser une thread???
pour pas que l compteur freeze mon appli.
J'ai vérifié, il la freeze bien.
Je n'ai plus accès à la GUI en éxcécution.
:koi:
as tu essayé un QTimer qui à temps régulier va regardé la position de lecture?
http://qt.developpez.com/doc/latest/qtimer.html#details
voici un exemple d'utilisation d'un QTimer.
En je voulais m'en servir pour te faire un exemple avec QThread et c'est la ou je ne comprenais plus pourquoi tu avait besoin d'un thread...
Ici tu as un objet qui à temp régulier va émettre une position et une QImage. Une IHM affichera tout cela.
Dsl j'ai pas eu le courage de faire des commentaire.
Mais si tu as des question pas de problème.
Pour ton problème, en gros tu va regarder la position de lecture à temps régulier
[edit]
nouveau code car oublié de mettre un fond avec painter :aie:
[/edit]
merci mec, je regarderai ca demain (tiens on est déja demain lol...)
décidemment Qt en tous cas.
PS : d'ailleurs avec mon thread-compteur, ca freezait si je ne faisais pas un petit sleep(1), c'est pour lui laisser le temps de repasser la main ou c'est juste anormal ?
Parfait, le QTimer marche parfaitement.
Le seul truc c'est que mon QTimer active le slot de positionnement de la tete de lecture, et qu'a la main via la GUI on peut bouger soi meme la tete de lecture pour se déplacer à différents points du track.
Résultat : si la fréquence du timer est trop forte, il empeche de bouger a la main la tete de lecture.
Ca ne freeze pas, donc pas besoin de thread, mais du coup j'ai fixé une pulse de 1sec pour le timer, en dessous ca n'est pas gérable.
Je pourrai également affiner la tete de lecture en changeant la résolution du slider via QtDesigner, et profiter d'une pulse de 10ms, graphiquement ce serait plus fluide et plus esthétique, mais je serais bloqué pour l'exploration.
En fait il empeche pas, mais il l'acquisition ne se fait pas forcément...
Je vois si c'est pas une question de bon choix du SIGNAL sur le slider...
En fait c'est tout bête, le timer repositionne la tete de lecture toutes les X ms,Citation:
Citation:
Envoyé par ttone Voir le message
Résultat : si la fréquence du timer est trop forte, il empêche de bouger à la main la tête de lecture.
pourquoi?
si je le pulse à 10 ms, je n'ai pas le temps de déplacer la tete que le timer s'est déjà chargé de l'actualiser...
ce que je vais faire:
* placer ce timer dans un thread->run()
* jouer du mutex
voici un autre exemple avec un QObject qui possède une valeur qui avance(peut representer la lecture d'un fichier) et une interaction avec un slider
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 #include <QtGui> class myPosition:public QObject { Q_OBJECT public: myPosition():QObject(),m_position(0) { connect(&m_timer,SIGNAL(timeout()),this,SLOT(avancer())); m_timer.start(100); } QTimer m_timer; int m_position; signals : void position(int); public slots: void setPosition(int pos) { m_position = pos ; } void pause() { m_timer.stop(); } void play() { m_timer.start(100); } void avancer() { m_position++; if (m_position>100 ) m_position =100; emit position(m_position); } }; #include "main.moc" int main(int argc,char ** argv) { QApplication app(argc,argv); QSlider slider; myPosition position; QObject::connect(&slider,SIGNAL(sliderPressed ()),&position,SLOT(pause())); QObject::connect(&slider,SIGNAL(sliderMoved (int)),&position,SLOT(setPosition(int))); QObject::connect(&slider,SIGNAL(sliderReleased ()),&position,SLOT(play())); QObject::connect(&position,SIGNAL(position(int)),&slider,SLOT(setValue(int))); slider.show(); return app.exec(); }
Cool ce code, je suis en train de le regarder, apparemment dans celui ci déjà tu n'as pas de probleme d'interaction avec le slider...Citation:
Fichiers attachés
Type de fichier : rar testTHread.rar (1,5 Ko, 3 affichages)
c'est ca que je dois mettre en place.Citation:
l'avancement est stoppé pendant le drag
Sinon je dois faire un mauvais truc en mettant une pulse lente au QTimer.
Dans mon cas, ca c'est inhérent. Je ne récupère le signal que si l'utilisateur a "released" le slider... le probleme c'est qu'il n'a pas le temps de le relacher que deja le slider s'est repositionné.Citation:
le slider envoie un signal que lorsque tu le bouge avec la souris
J'ai testté d'autres signaux dérivant de QAbstractbutton notamment, comme clicked, mais ca ne marche pas bien, voir pas du tout, bien que la doc Trolltech les mentionne pour un QSlider.
sert toi du dernier code alors ;)
c'est sliderMoved qui freeze automatiquement les autres signaux ?