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

C++ Discussion :

Failed to create a timer


Sujet :

C++

  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 Failed to create a timer
    Bonsoir,

    Je développe un petit widget et je souhaitais l'intégrer à une fenêtre plus tard.
    Mais lorsque que je lance la compilation, j'ai l'erreur suivante :
    QEventDispatcherWin32::registerTimer: Failed to create a timer (Le processus actuel a utilis? tout son lot allou? par le syst?me de descripteurs pour les objets du Gestionnaire de fen?tre.)
    C'est assez étonnant (et embêtant) parce que lorsque que je compile le même code mais dans un mainwindow d'un autre projet (qui n'a qu'une fenêtre, ça marche ...)

    Voici le code du widget:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #include "countdown.h"
    #include "ui_countdown.h"
     
    countdown::countdown(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::countdown)
    {
        ui->setupUi(this);
        chrono();
    }
     
    countdown::~countdown()
    {
        delete ui;
    }
     
    /*************************************/
    /************* COUNTDOWN *************/
    /*************************************/
     
    void countdown::chrono()
    {
        long cpt=0;
        while(true){
            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;
    }

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 438
    Points
    2 438
    Par défaut
    Bonsoir.

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void countdown::chrono()
    {
        long cpt=0;
        while(true){
            QTimer *t = new QTimer();
            t->start(10);
            connect(t, SIGNAL(timeout()), this, SLOT(maj()));
            cpt++;
        }
    }

    Dans cette fonction tu créés une infinité de timer et de connexions, donc Qt râle parce que tu utilises toutes les ressources qu'on lui a alloué.

    Si tu veux en créer un nombre défini, il suffit de changer la condition de ta boucle.
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hoe,

    Et voilà un effet d'un style de programmation mal pensé.

    Sauf dans de rares situations, on ne devrait jamais voir ce genre de truc :
    Si les cons volaient, il ferait nuit à midi.

  4. #4
    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
    Oui, j'en suis bien conscient. J'ai viré la boucle, et tout s'est mis à marcher, comme par magie.

    Sauriez vous m'expliquer pourquoi l'action se répète, sans le while ?

  5. #5
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 438
    Points
    2 438
    Par défaut
    Citation Envoyé par cover70 Voir le message
    Sauriez vous m'expliquer pourquoi l'action se répète, sans le while ?
    C'est le principe des timers de Qt :
    t->start(10); créé un timer qui va envoyer un signal timeout(); toutes les 10ms. Signal que tu connectes à ton slot maj().
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  6. #6
    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
    Je vais aller lire la doc correctement, avant de poser des questions comme ça.
    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. java3d offscreen rendering - "failed to create drawable"
    Par bboulch dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 16/07/2009, 22h30
  2. [COM] Failed to create COM object word.application: Accès refusé
    Par groovyroe dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 10/05/2009, 17h46
  3. Réponses: 1
    Dernier message: 17/05/2008, 20h47
  4. Erreur d'installation " Failed to created process: 2! &
    Par hugobob dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/09/2005, 12h10
  5. Réponses: 4
    Dernier message: 20/04/2005, 13h30

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