0

在编写 Qt4 应用程序时,我笨拙地写道:

QObject::connect(spinbox, SIGNAL(vlaueChanged(int)), ....

它编译了,它运行了,但是旋转框当然没有任何效果。

应该抓住这样的拼写错误。我一直认为 valueChanged() 是在某个头文件中声明的,但显然不是。任何垃圾都可以提供给 SIGNAL() 或 SLOT(),它会编译。我的玩具程序很小。对于具有动态连接的动态创建控件的大型应用程序,这样的错误可能很难追踪。

有没有办法对这种错字进行错误检查?编译器(gcc)是否可以这样做,或者其他工具是否合适?

4

2 回答 2

1

这已针对 Qt5 进行了更改。你可以在这里阅读。

于 2013-05-21T08:00:32.473 回答
0

SIGNALSLOT宏将它们的参数转换为字符串,并且在编译时不会检查它们(因为......它们实际上是字符串)。如果信号/插槽名称错误,则在运行时Qt写入警告 ( qWarn)。他们说,在 Qt5 中发生了一些变化。

以我的经验,有时你确实会犯这样的错误(虽然很少,自动补全有很大帮助),但它很容易被追踪和修复。

于 2013-05-21T07:34:28.277 回答