IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multithreading Discussion :

Thread, widget et mainwindow


Sujet :

Multithreading

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Points : 37
    Points
    37
    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 : 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
    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 :
    ..\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 !

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Est-il normal de créer N compteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Invité
    Invité(e)
    Par défaut
    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

Discussions similaires

  1. Widgets must be created in the GUI thread
    Par gassi64 dans le forum Qt
    Réponses: 8
    Dernier message: 29/06/2009, 14h46
  2. [SWT] synchro widget avec thread
    Par TiTiSeb dans le forum SWT/JFace
    Réponses: 7
    Dernier message: 08/09/2008, 21h21
  3. [gtkmm] thread et protection des widget
    Par Rniamo dans le forum GTK+
    Réponses: 7
    Dernier message: 15/08/2008, 17h27
  4. Réponses: 1
    Dernier message: 18/04/2008, 16h11
  5. partager un PTK Mainwindow entre thread ?
    Par mohaz dans le forum Langage
    Réponses: 2
    Dernier message: 08/07/2007, 00h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo