Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > Qt > Multithreading
Multithreading Forum d'entraide sur la programmation multitâche avec Qt
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/12/2012, 23h01   #1
cover70
Invité régulier
 
Inscription : juin 2012
Messages : 32
Détails du profil
Informations forums :
Inscription : juin 2012
Messages : 32
Points : 8
Points : 8
Par défaut Thread, widget et mainwindow

Bonsoir,

Je vous explique brièvement ce que je cherche à faire :
J'ai un widget qui doit afficher un chrono mis à jour très fréquemment, dont voici le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
void countdown::run()
{
    long cpt=0;
    while(cpt<1000000){
        QTimer *t = new QTimer();
        t->start(10);
        connect(t, SIGNAL(timeout()), this, SLOT(maj()));
        cpt++;
    }
}
 
void countdown::maj()
{
    long diff;
 
    datetime dateNow;
    diff = *dateC-dateNow;
 
    if(diffsec<0)
        diffsec=99;
 
    QString tmp;
 
    if(diffsec<10)
        tmp= "0" + QString::number(diffsec);
    else
        tmp = QString::number(diffsec);
 
    ui->ctdwn->setText(QString::number(diff)+"."+tmp);
    diffsec=diffsec-1;
}
J'ai mis la première fonction dans un run(), sachant que ma classe hérite de QThread pour pouvoir s'exécuter en même temps que le reste de l'appli.

Application composée aussi d'un mainwindow sur lequel j'affiche le widget.

Sauf que j'ai une erreur que voici :
Citation:
..\affimage\countdown.cpp:26: error: reference to 'connect' is ambiguous
..\..\Desktop\Qt\4.7.4\mingw\include/QtCore/qobject.h:313: error: candidates are: bool QObject::connect(const QObject*, const char*, const char*, Qt::ConnectionType) const
..\..\Desktop\Qt\4.7.4\mingw\include/QtCore/qobject.h:198: error: candidates are: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType)
..\..\Desktop\Qt\4.7.4\mingw\include/QtCore/qobject.h:313: error: bool QObject::connect(const QObject*, const char*, const char*, Qt::ConnectionType) const
..\..\Desktop\Qt\4.7.4\mingw\include/QtCore/qobject.h:198: error: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType)
Sinon j'ai testé sans thread, mais le compteur n'était pas mis à jour...


Merci de votre aide !
cover70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2013, 19h13   #2
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 467
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mai 2008
Messages : 10 467
Points : 40 428
Points : 40 428
Bonjour,

Est-il normal de créer N compteur :
Code :
1
2
3
4
5
6
while(cpt<1000000){
        QTimer *t = new QTimer();
        t->start(10);
        connect(t, SIGNAL(timeout()), this, SLOT(maj()));
        cpt++;
    }
Qu'un seul suffit, non ?

Sinon, pouvons nous voir le fichier .h ? peut être que maj n'est pas déclaré comme un slot.
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2013, 09h53   #3
Lelfic
Membre du Club
 
Homme Ludovic Demissy
Développeur informatique
Inscription : mai 2012
Messages : 70
Détails du profil
Informations personnelles :
Nom : Homme Ludovic Demissy
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : mai 2012
Messages : 70
Points : 62
Points : 62
L'erreur indique que le compilateur de sait pas de quelle classe vient ta fonction connect. Pour l'utiliser de la sorte, il faut que la classe dans laquelle tu l'utilises hérites, directement ou indirectement, de QObject. Dans le cas contraire, il faut utiliser QObject::connect
Lelfic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h46.


 
 
 
 
Partenaires

Hébergement Web