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 :

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;
}
J'utilise Qt 4.7.4.
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.