没有插槽,但 QMetaObject::connectSlotsByName 使用 Qt 和 C++ 时出错

No slots but QMetaObject::connectSlotsByName error using Qt and C++

本文关键字:Qt C++ 出错 使用 connectSlotsByName 插槽 QMetaObject      更新时间:2023-10-16

我正在用C++和Qt Creator编程,我的代码运行良好。尽管如此,我遇到了一个问题,即在编译代码时收到警告。

QMetaObject::connectSlotsByName: No matching signal for on_but_PrintTab_clicked()

曾经有一个名为 on_but_PrintTab_clicked() 的插槽,但它不再存在。如何摆脱此警告?

您的呼叫中某处有一个connect()呼叫正在尝试连接到on_but_PrintTab_clicked。只需搜索"on_but_PrintTab_clicked"并删除此connect()调用。

Qt自动连接机制尝试将信号连接到对象插槽,形式为:

void on_<object name>_<signal name>(<signal parameters>);

因此,在这里它尝试找到一个名为but_PrintTab的对象,该对象具有clicked信号将其连接到插槽。但是没有这样的事情,它会输出警告。

如果您有这样的插槽,则应将其名称更改为其他名称以避免此警告。

如果按钮和插槽不再存在,请尝试在您的项目上再次运行 qmake,这将得到解决。

更改函数的名称,或者不在公共/专用插槽中声明函数,在公共或私有插槽中声明它。