繁体   English   中英

C ++连接信号

[英]c++ connect signal

我得到了这个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

然后我得到了一个名为tray: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();时如何做到这一点setPause(); 在他调用setPause();的thread.cpp文件中setPause(); 在tray.cpp文件中?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM