QGraphicView dans un QDalog ou QMainWindow
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 :
Code:
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()));
} |
Ensuite, si je crée ma GraphicsView en standalone, ça marche nickel :
Code:
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();
} |
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:
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();
} |
Code:
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);
} |
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).
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 :)