2010-07-02 5 views
0

J'ai reçu ce fichier thread.h;C++ connect signal

#ifndef THREAD_H 
#define THREAD_H 

#include <QtGui> 
#include <QString> 

#include <tray.h> 
class svThread : public QThread { 

    public: 
     bool getIsPaused(); 
     void checkSettings(); 
     virtual void run(); 
     void setPause(bool); 
signals: 
     void mySignal(bool); 
}; 

#endif // THREAD_H 

et je suis une application de plateau, plateau nommé: P où je fais un fil;

svThread a; 

et je le commence.

dans tray.h J'ai aussi obtenu une fente

class Tray : public QWidget 
{ 
    Q_OBJECT 

public: 
    Tray(); 
    QMenu *trayIconMenu; 

    public slots: 
     void settings(); 
     void pause(); 
     void setPause(bool); 

public: 
    void createActions(); 
    void createTrayIcon(); 

    QAction *settingAction; 
    QAction *quitAction; 
    QAction *pauseAction; 
    QSystemTrayIcon *trayIcon; 
}; 

#endif 

Mais comment puis-je faire que lorsque j'utilise setPause(); dans le fichier thread.cpp qu'il appelle setPause(); dans le fichier tray.cpp?

+0

Vous devez cliquer sur le bouton de code avec toute la gamme de code sélectionné. Vous ne pouvez pas simplement appuyer sur le bouton de code, puis coller dans le bloc. (chaque ligne de code doit commencer par 4 espaces) – Cogwheel

+0

Demandez-vous comment vous le câbler de sorte que lorsque quelqu'un appelle une pause sur un objet Thread, il émet un signal qui appelle une pause sur l'objet Tray? Ou demandez-vous l'inverse? – Pace

+0

Désolé mais vraiment je ne comprends pas ce que vous dites et ce que vous demandez .. – liaK

Répondre

0

Vous avez juste besoin de connecter chaque paire de signaux et d'emplacements de l'objet comme vous le feriez normalement. Jetez un oeil à Qt's documentation sur le sujet qui est très bon. Fondamentalement, il est:

connect(threadObj, SIGNAL(mySignal(bool)), trayObj, SLOT(setPause(bool)));