【发布时间】:2014-08-19 17:14:46
【问题描述】:
可能解决方案很简单,但是从对话框中删除 ButtonBox 后,我收到以下错误:
QMetaObject::connectSlotsByName: No matching signal for on_buttonBox_accepted()
对话框类中有一个具有该名称的插槽,我使用它。 我不知道为什么 Qt 认为应该有另一个信号连接到该插槽。 (我检查了 c++ 和 .ui xml 文件)
【问题讨论】:
-
清理你的项目,然后重建。还是同样的错误?
-
QMetaObject::connectSlotsByName期望一个名为buttonBox的对象带有accepted信号,但正如你所说,你删除了这样的对象。 -
@thuga 生成的头文件可能没有更新。
-
@UmNyobe 他说他仍在使用那个插槽。 对话框类中有一个同名的槽,我使用它。
-
@AndrásKovács 是的。当您使用
void on_<object name>_<signal name>(<signal parameters>);语法来命名您的插槽时,它会尝试这样做。QMetaObject::connectSlotsByName在您的ui_classname.h文件中的某处被调用。将您的插槽重命名为其他名称,例如删除on_部分。
标签: c++ qt signals-slots