1

私はクラスを持っています:

class SupervisionManager : public QThread {
    Q_OBJECT public:
    explicit SupervisionManager(ComAds* com, ComRegEtat* comEt,
                                ComRegOrdonnanceur* comOrdo,
                                QObject *parent = 0);
    ~SupervisionManager();  

protected:
    virtual void run();

private:
    void actionFromPlc();

    ComRegEtat::Antichoc antichoc;


signals:
    void majAntichoc(ComRegEtat::Antichoc&);
};

そして実装:

void SupervisionManager::run() {
    manage=true;

    while(manage)
    {
        actionFromPlc();
        usleep(5000);
    }
}


void SupervisionManager::actionFromPlc() {
    antichoc.SAS = false;
    emit majAntichoc(antichoc);
}

そして、この信号を次のように接続します。

connect(manager, SIGNAL(majAntichoc(ComRegEtat::Antichoc&)),
        preparation, SLOT(affichageAntichoc(ComRegEtat::Antichoc&)));

structパラメータリストにa を含むシグナルを送信するにはどうすればよいですか? を使用する必要があると思いますが、QSignalMapper方法がわかりません。

4

2 に答える 2

0

他のものを放出するのとまったく同じ方法で..

ComRegEtat::Antichoc  myStruct;
.. some initialisation code
emit majAntichoc(myStruct);

最新の Qt についてはよくわかりませんが (シグナル/スロットがテンプレートベースに変更された後)、「emit」が空の定義になる前は、関数呼び出しのように emit を参照する必要があります...

于 2013-04-19T16:39:19.837 に答える
0

私のコードでは、スロットは呼び出されませんが、信号は送信されます。

私は解決策を見つけました:

signals:
    void majAntichoc(ComRegEtat::Antichoc *);

slot : 
    void affichageAntichoc(ComRegEtat::Antichoc *);

を使用する必要はありませんQSignalMapper

ありがとう

于 2013-04-22T07:35:16.600 に答える