0

我得到了这个 thread.h 文件;

#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;

我开始了。

在托盘.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

但是,当我setPause();在他在tray.cpp 文件中调用setPause();的thread.cpp 文件中使用它时,我该怎么做呢?

4

2 回答 2

0

尝试排队连接。只需提供连接的第五个参数Qt::QueuedConnection

于 2010-07-02T18:57:22.450 回答
0

您只需要像往常一样连接每对对象的信号和插槽。看看Qt关于这个主题的文档非常好。基本上是:

connect(threadObj, SIGNAL(mySignal(bool)), trayObj, SLOT(setPause(bool)));
于 2010-07-02T17:06:29.330 回答