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 的信号?我想我必须使用 aQSignalMapper但我不明白如何。

4

2 回答 2

0

使用我的代码,在发出信号时不会调用插槽。

我找到了解决方案:

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

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

而且我不必使用QSignalMapper.

谢谢

于 2013-04-22T07:35:16.600 回答
0

与您发出其他东西的方式完全相同..

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

我不确定最新的Qt(在他们更改了基于模板的信号/插槽之后),但在'emit'之前只是空定义,所以你应该像函数调用一样查看emit...

于 2013-04-19T16:39:19.837 回答