2010-07-02 96 views
0

我得到了這個thread.h文件;C++連接信號

#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 

和我有一個托盤應用程序,命名爲托盤:P,我在哪裏做一個線程;

svThread a; 

我開始了。

在tray.h

我也有一個插槽

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 

但我怎麼能作出這樣的,當我在,他稱在tray.cpp文件setPause();的thread.cpp文件中使用setPause();

+0

您需要單擊代碼按鈕並選擇所有代碼範圍。不能只是點擊代碼按鈕,然後粘貼到塊中。 (每行代碼必須以4個空格開頭) – Cogwheel 2010-07-02 16:45:52

+0

您是否問過如何連線它,以便有人在Thread對象上調用暫停時會發出一個信號,調用Tray對象上的暫停?或者你是否要求另一種方式? – Pace 2010-07-02 16:49:17

+0

對不起,但我真的不能理解你在說什麼,你在問什麼。 – liaK 2010-07-02 16:50:39

回答

0

你只需要連接每一對物體的信號和插槽,就像你通常一樣。看看這個主題非常好的Qt's documentation。基本上它是:

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