带有struct in参数的QT信号

时间:2013-04-19 12:55:58

标签: qt signals slot

我有课:

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

2 个答案:

答案 0 :(得分:0)

与你发出其他东西完全一样..

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

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

答案 1 :(得分:0)

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

我找到了解决方案:

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

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

我不必使用QSignalMapper

由于