p
u
b
l
i
c
i
t
é
publicité
  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 : 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
    18 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : mai 2008
    Messages : 18 586
    Points : 108 605
    Points
    108 605
    Billets dans le blog
    3

    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
    La rubrique a aussi un blog !

    Ma page sur DVP
    Mon Portfolio

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

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : mai 2012
    Messages : 106
    Points : 104
    Points
    104

    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 <_oodTi96Tiboo_> 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