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 :

[QThread] ne marche pas


Sujet :

Multithreading

  1. #1
    Membre régulier
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Points : 113
    Points
    113
    Par défaut [QThread] ne marche pas
    Voila mon projet:
    http://www.first-world.info/fichier/ultracopier.zip
    Le problème c'est que quand on ouvre la fenêtre:

    Et qu'on appuis sur le + et qu'on veux ajouter un dossier il plante, car le thread n'est pas allouer je pense, comment faire ce que je veux? Comment lancer un thread lors d'un clique sur un bouton en passant à ce thread le pointeur de la fenêtre? Comme je veux faire. Pour pouvoir compiler et lancer mon projet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    qmake -project
    qmake
    make
    ./ultracopier
    Développeur d'Ultracopier

  2. #2
    Membre confirmé

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Points : 644
    Points
    644
    Par défaut
    Main_window::addFolder() utilise AddingFolderThread (de type Thread*) qui n'est jamais alloué (j'ai pas vu où sinon). Donc le programme plante.
    Si tu veux utiliser qu'un seul objet thread pour l'ajout de répertoire, fais un new dans le constructeur de Main_window.

  3. #3
    Membre régulier
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Points : 113
    Points
    113
    Par défaut
    Dans l'exemple que j'ai il font pareil, donc c'est pour ça que j'ai pas compris.
    J'ai déjà essayé de l'allouer j'y suis pas arriver, je vais retester...
    Développeur d'Ultracopier

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par alpha_one_x86 Voir le message
    Dans l'exemple que j'ai il font pareil, donc c'est pour ça que j'ai pas compris.
    J'ai déjà essayé de l'allouer j'y suis pas arriver, je vais retester...
    D'ou vien ton exemple??

  5. #5
    Membre régulier
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Points : 113
    Points
    113
    Par défaut
    Du livre pour apprendre QT4 soit "C++ GUI programming with QT4" de Jasmin Blanchette et mark summerfield, il y a qu'un seul exemple pour les threads.
    Soit:
    http://www.first-world.info/fichier/threads.zip
    Et je trouve pas ou il creer leur objets, et j'ai coller au mieux mon code source au leur, pour qu'il y ressemble le plus.
    Développeur d'Ultracopier

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    en regardant vite fait
    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
    class ThreadDialog : public QDialog
    {
        Q_OBJECT
    
    public:
        ThreadDialog(QWidget *parent = 0);
    
    protected:
        void closeEvent(QCloseEvent *event);
    
    private slots:
        void startOrStopThreadA();
        void startOrStopThreadB();
    
    private:
       Thread threadA;
        Thread threadB;
        QPushButton *threadAButton;
        QPushButton *threadBButton;
       QPushButton *quitButton;
    };
    ce ne sont pas des pointeur, donc ils sont créé a la creation de ThreadDialog

  7. #7
    Membre régulier
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Points : 113
    Points
    113
    Par défaut
    Dans le fichier Mwindow.h ligne 49 j'ai pourtant bien initialiser mon thread:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread *AddingFolderThread
    C'est ca que je comprend pas.
    Merci de ton aide, car je tournait en rond depuis trop longtemps.
    Développeur d'Ultracopier

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par alpha_one_x86 Voir le message
    Dans le fichier Mwindow.h ligne 49 j'ai pourtant bien initialiser mon thread:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread *AddingFolderThread
    C'est ca que je comprend pas.
    Merci de ton aide, car je tournait en rond depuis trop longtemps.
    ??
    Thread *AddingFolderThread c'est un pointeur sur une thread. C'est oas la même chose

  9. #9
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par alpha_one_x86 Voir le message
    Dans le fichier Mwindow.h ligne 49 j'ai pourtant bien initialiser mon thread:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread *AddingFolderThread
    C'est ca que je comprend pas.
    Merci de ton aide, car je tournait en rond depuis trop longtemps.
    Au contraire, tu l'as juste déclaré visiblement. Je n'ai pas lu tout le code.
    Le thread sera créé ici que lorsque tu utiliseras new.

  10. #10
    Membre régulier
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Points : 113
    Points
    113
    Par défaut
    Donc si mes souvenir des classes sont pas trop vieux:
    AddingFolderThread = new Thread; dans le construteur de ma class qui va utiliser le thread?
    Développeur d'Ultracopier

  11. #11
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Visiblement, c'est cette ligne qu'il faut utiliser pour faire ce que tu voulais.

  12. #12
    Membre régulier
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Points : 113
    Points
    113
    Par défaut
    Losque je clique sur le bouton pour lancer le thread:
    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
    bool Main_window::addFolder()
    {
    	if(AddingFolderThread->isRunning())
    	{
    		QMessageBox::warning(NULL, "Error",
    		"Wait the end of the previous folder adding. Thanks",
    		QMessageBox::Cancel,
    		QMessageBox::Cancel);
    	}
    	else
    	{
    		AddingFolderThread->start();
    	}
    	return true;
    }
    Il me dit en console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Xlib: unexpected async reply (sequence 0x1e54)!
    Et quand je reclique il met le cpu à 100%, ouvre une boite de dialogue buger.
    Pour quoi ça fait ça, tout mes parait correcte.

    Lors de l'appelle du constructeur j'ai mit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddingFolderThread = new Thread;
    Développeur d'Ultracopier

Discussions similaires

  1. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  2. Maximiser fenêtre ne marche pas
    Par sandrinec dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/06/2003, 12h02
  3. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  4. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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