我有课:
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
,但我不明白如何。
答案 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
。
由于