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 :

Problème avec start()


Sujet :

Multithreading

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 38
    Par défaut Problème avec start()
    salut,
    je suis entrain de faire un programme qui doit afficher à partir de son lancement le nombre de secondes ecoulés dans un QLCDNumber.

    Pour cela , j'ai fait une classe timing:

    timing.h
    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
    #ifndef TIMING_H
    #define TIMING_H
     
    #include <QThread>
    #include <QLCDNumber>
     
    class timing : QThread
    {
        Q_OBJECT
     
        QLCDNumber* pl;
     
     
    public:
        timing(QLCDNumber*,QObject *parent=0);
        void run();
     
    };
     
    #endif // TIMING_H
    timing.cpp
    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
    #include "timing.h"
     
    timing::timing(QLCDNumber* p,QObject *parent)
        : QThread(parent)
    {
        pl=p;
    }
     
     
    void timing::run(){
     
        int i=0;
        while(1) {pl->display(i);i++;sleep(1);}
     
    }
    dans le cpp de la fenetre j'ai déclaré un objet "timing" et je l'ai lancé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    timing* tt;
    tt=new timing(&timer,this);
    tt->start();
    lorsque je lance le programme, qtcreator m'affiche cette erreur bizarre:

    ************
    error: ‘void QThread::start(QThread:riority)’ is inaccessible
    within this context
    ‘QThread’ is not an accessible base of ‘timing’
    ************

    Quelqu'un peut me dire pourquoi cette erreur, et qu'est ce que je dois faire?
    J'ai fai un autre programme similaire avec les QThread, mais c'est la premiere fois que je rencontre cette erreur.

    Merci bien pour votre aide.

  2. #2
    Membre chevronné
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Par défaut
    Je ne sais pas si l'erreur vient directement de la ou non, mais tu n'utilise pas la bonne méthode.
    Appeler des méthodes d'un widget (ou tout autre élément de GUI) à partir d'un thread est une mauvaise idée, Qt indique clairement que ces méthodes ne sont pas ré-entrantes.
    Le bonne façon de faire est d'émettre un signal avec ton nombre de secondes en paramètre à l'endroit ou tu fait ton display, et à l'endroit ou tu crée ton timing, de connecter ce signal au slot display de ton LCD.

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par haraelendil Voir le message
    Appeler des méthodes d'un widget (ou tout autre élément de GUI) à partir d'un thread est une mauvaise idée, Qt indique clairement que ces méthodes ne sont pas ré-entrantes.
    Il l'interdisse même. Fait cela en debug et tu aura un beau assert ^^

    Pourquoi vouloir une thread??? Un timer serai bien plus simple et adapté.

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/04/2010, 14h54
  2. Problème avec System.Diagnostics.Process.Start();
    Par ZeProgrammator dans le forum ASP.NET
    Réponses: 13
    Dernier message: 06/11/2009, 10h55
  3. problème avec java web start
    Par al3alwa dans le forum NetBeans
    Réponses: 0
    Dernier message: 18/11/2008, 08h40
  4. Problème avec Java Web start
    Par kenny6 dans le forum JWS
    Réponses: 6
    Dernier message: 12/09/2007, 17h10
  5. problème avec les commandes run() et start() de Thread
    Par -Juliette- dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 18/06/2007, 10h08

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