Bonjour,
je code une application pour un algorithme 2OPT sur le problème du TSP. J'ai une interface graphique en QT qui affiche le poids du tour (cycle hamiltonien) dans un lineEdit et qui affiche le cycle dans une fenêtre openGL :
Mon problème, c'est que je voudrais voir les étapes du 2opt en temps réel et donc rafraichir la fenetre Qt. J'ai essayer un QThread mais sa ne fonctionne pas :
DEUX_OPT.h
Vue.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 class DEUX_OPT : public QThread { private: Vue * _vue; public: DEUX_OPT(); ~DEUX_OPT(); void run() { while (!STOP) { // Algoritme _vue->updateGL(); _vue->majPoids(poids); } } };
Les classes ont été simplifiés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include "ui_FenetreDesigner.h" class Vue : public QMainWindow { Q_OBJECT private: Ui::VueClass _ui; public: Vue(QWidget * parent = 0); ~Vue(); void updateGL() { _ui.widget->updateGL(); // Appel 'paintGL()' } void majPoids(int poids) { _ui.lineEdit->setText(QString::number(poids)); } };
Le bouton 'START' appelle la méthode 'start' du DEUX_OPT.
Si j'enlève le 'public QThread', la fenêtre openGL est rafraichit mais pas le lineEdit.
Merci.
Partager