Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2012
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : juin 2012
    Messages : 39
    Points : 11
    Points
    11

    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 :
    ..\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 Alexandre Laurent
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    16 753
    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 : 16 753
    Points : 86 265
    Points
    86 265

    Par défaut

    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.

  3. #3
    Membre régulier
    Homme Profil pro Ludovic Demissy
    Développeur informatique
    Inscrit en
    mai 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Nom : Homme Ludovic Demissy
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : mai 2012
    Messages : 96
    Points : 82
    Points
    82

    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •