Bonjour,
J'ai une séquence de points que je souhaite afficher dans un GraphicsView et qui évolue avec le temps.
J'ai donc crée un objet myScene, qui comporte un vector de vector de points et un vector de temps.
Je lui ai fait une la fonction update :
Ensuite, si je crée ma GraphicsView en standalone, ça marche nickel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void MyScene::update() { dessinePoints(mesPoints[cpt],temps[cpt]); ++cpt; if(cpt<temps.size()) QTimer::singleShot(temps[cpt]*100, this, SLOT(update())); }
Le problème, c'est quand j'utilise la view dans une qmainwindow : ça affiche la 1ère ligne, mais il n'y a pas d'animation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int main(int argc, char *argv[]) { QApplication a(argc, argv); MyScene scene=new MyScene(); scene->initData(); QGraphicsView *view=new QGraphicsView (scene); scene->update(); view->show(); return a.exec(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }Avec le debugger, on passe bien sur le QTimer de MyScene, mais c'est comme si il n'agissait pas (on n'y passe qu'une fois, la fonction n'est pas rappelée).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); scene=new MyScene(); scene->initData(); scene->update(); ui->graphicsView->setScene(scene); }
Si je mets un bouton qui appelle scene->update(), ça marche, à chaque fois que j'appuie sur le bouton, avec d'un pas.
Des idées ?
Merci d'avance![]()
Partager