QT 插槽和信号参数
Posted
技术标签:
【中文标题】QT 插槽和信号参数【英文标题】:QT slots and signals args 【发布时间】:2011-11-11 02:20:38 【问题描述】:我是 Qt 新手,偶然发现了一个在 Google 上找不到答案的问题。
假设我想发送一个加速度和速度场。我定义了一个自定义信号:
setProperties(QString,double,double,bool)
但是,在这样的语句中,我如何区分速度和加速度呢?
connect(dialog, SIGNAL(setProperties(QString,double,double,bool)),
this, SLOT(somerandomslot()));
randomslot
需要获取速度场和加速度场并对其进行操作,但在上面的SIGNAL
中它们只是double
。
【问题讨论】:
【参考方案1】:在这种情况下,您的 somerandomslot()
函数可能应该具有匹配的函数签名,以便信号中的值 emit
ed 可以传递给它:
void somerandomslot( const QString &foo, double a, double v, bool bar );
那么您的连接调用将如下所示:
connect(dialog, SIGNAL(setProperties(QString,double,double,bool)), this, SLOT(somerandomslot(QString, double, double, bool)));
当您的 somerandomslot()
被调用时,您将可以访问这些变量。
【讨论】:
嗨,克里斯,感谢您的回复,但是 randomSlot 如何区分第一个双精度数和第二个双精度数?即来自 setProperties 的第一个双精度与来自 somerandomslot 的第一个双精度完全匹配吗?非常感谢 它的顺序与您调用发出时传递给您的信号的参数的顺序相同。就像任何 C++ 函数调用一样。以上是关于QT 插槽和信号参数的主要内容,如果未能解决你的问题,请参考以下文章