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() 函数可能应该具有匹配的函数签名,以便信号中的值 emited 可以传递给它:

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 插槽和信号参数的主要内容,如果未能解决你的问题,请参考以下文章

Qt:将信号/绑定参数适应插槽?

Qt - 使用信号/插槽关闭子菜单

Qt4 插槽和信号:Qt4 无法找到信号

使用 qt 中的信号/插槽更新 gui [关闭]

Qt 信号和插槽发送结构数组

Qt - 2 类中的信号和插槽