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;

そして始めています。

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

setPause();しかし、彼がtray.cppファイルで呼び出すthread.cppファイルで使用するときに、どうすればそれを作成できsetPause();ますか?

4

2 に答える 2

0

Queued Connectionsを試してください。connect の 5 番目の引数を指定するだけです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 に答える