2010-07-02 94 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)));