我花了一些时间来查找与插槽和信号有关的错误。我从另一个文件复制了一些 connect() 行,我依靠编译器找出我需要在我的新类中定义哪些对象,所以我添加了它们。 “this”对象不应该被编辑,所以我不关心提供相应的插槽。该程序编译正常,甚至没有警告。但是 - 由于缺少插槽 - 无法运行。
考虑到(有时太)严格的类型检查,为什么 Qt 至少不产生警告? (在编译时它可以肯定地知道,不存在这样的插槽。)
最佳答案
实际上,新的基于仿函数的连接会在编译时进行检查,所以如果出现一些无效的信号/槽,应用程序甚至不会编译
因此,要在编译时检查它,您只需要使用基于仿函数的连接类型:
connect(slider, &QSlider::valueChanged,
doubleSpinBox, &QDoubleSpinBox::setValue);
而不是基于字符串:
connect(slider, SIGNAL(valueChanged(int)),
doubleSpinBox, SLOT(setValue(int)));
您可以在这里阅读详细信息: http://doc.qt.io/qt-5/signalsandslots-syntaxes.html
关于c++ - 为什么 Qt 至少不对丢失的插槽发出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35819029/