Bonjour à tous,
Je débute sur Qt et je cherche à créer une liste d'objet myCell constituant une grille. Cet objet doit mettre en place un signal qui va permettre d'activer un slot de GraphicsScene qui permet de mettre à jour le QRectItem correspondant, lorsque son myCell correspondant est modifié.
Mon code est le suivant:
putColor() est une fonction de myCell qui permet de déterminer la couleur à afficher.
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 void myCalculator::createGrille(int x, int y, bool vis) { grilleVisible = vis; nbLines = x; nbColumns = y; for (int i = 0; i<=(x*y); i++) { int abs = i%x + 1; int ord = i/x + 1; myCell* cell = new myCell(abs, ord, vis, this); QObject::connect(cell, SIGNAL(update(QPoint, QColor)), pt_manager, SLOT(updateRectAt(QPoint, QColor))); cell->putColor(); grille.append(cell); }; }
Tout fonctionne, ça compile bien, par contre, je trouve cela un peu lent. Par exemple, pour 90 000 éléments, ça met plus de 135 000 millisecondes pour faire la boucle. Si j'enlève juste le signal/slot, ça tombe à 238 millisecondes.
Je me demande donc si j'ai mal codé quelque chose ou si c'est simplement le système SIGNAL/SLOT qui n'est pas adapté dans mon cas?
Partager