【问题标题】:QMetaObject::connectSlotsByName errorQMetaObject::connectSlotsByName 错误
【发布时间】: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


【解决方案1】:

QMetaObject::connectSlotsByName 期望一个名为 buttonBox 的对象带有 accepted 信号,但正如你所说,你删除了这样的对象。

当您使用void on_<object name>_<signal name>(<signal parameters>); 语法命名您的槽时,QMetaObject::connectSlotsByName 将尝试按名称将该槽连接到信号。 QMetaObject::connectSlotsByName 在您的 ui_classname.h 文件中的某处被调用。

要解决此问题,请将您的插槽重命名为其他名称,例如删除 on_ 部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2011-01-11
    • 1970-01-01
    相关资源
    最近更新 更多