Bonsoir,
J'utilise le signal timeout d'un QTimer connecté au slot repaint() d'un QWidget et ainsi animer un "sprite" composé de QImages chargé dans le constructeur de ce QWiget. Mon application fonctionne très bien sur Windows mais sur Mac OS X l'utilisation du CPU est supérieure à 70%. Voici mon code :
J'utilise Qt 4.7.4.
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 MySprite::MySprite(QWidget *parent) : QWidget(parent) { timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(repaint())); currentImage = 0; for(int i = 0;i<50;i++){ image[i] = QImage(QString(":/gui/images/pulse/image%1.png").arg(i)); } } void MySprite::paintEvent ( QPaintEvent * pe ) { QPainter painter(this); painter.drawImage(0, 0, image[currentImage]); currentImage = (currentImage+1) % 50; }
Précision importante : Quand je commente le contenu de la méthode paintEvent, j'ai le même problème ! Donc cela vient de l'appel à repaint() selon moi.
Cordialement,
Florian.
Partager