我花了一些时间找到错误,连接机智插槽和信号。我从另一个文件中复制了一些connect()行,我依靠编译器找出我需要在新类中定义的对象,所以我添加了它们。不应该编辑'this'对象,所以我不在乎提供相应的插槽。该程序编译好,甚至没有警告。但是 - 缺少插槽 - 不会运行。
考虑到(有时太严格)类型检查,为什么不至少产生Qt警告? (在编译时,它可以肯定地知道没有这样的插槽。)
答案 0 :(得分:5)
实际上,新的基于仿函数的连接会在编译时进行检查,因此在某些无效信号/插槽的情况下,应用程序甚至无法编译
因此,要在编译期间检查它,您只需要使用基于仿函数的连接类型:
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