Qt运行时报错 QObject__connect_ No such signal以及QMetaObject__connectSlotsByName_No matching signal for

⌚Time: 2022-03-12 20:24:46

👨‍💻Author: Jack Ge

QObject::connect: No such signal

使用connect连接信号与槽函数时,附带了信号或者槽函数的参数。编译会通过,而运行不会通过。

若信号函数


void signal_1(int param);

槽函数


void function_1(int param);

而connect写成


connect(objectA,SIGNAL(signal_1(int param)),objectB,SLOT(function_1(int param)));

编译会通过,运行时会报错,并且无法触发槽函数


QObject::connect: No such signal

QObject::connect: No such slot

正确写法在connect中只有类型,没有参数


connect(objectA,SIGNAL(signal_1(int)),objectB,SLOT(function_1(int)));

QMetaObject::connectSlotsByName:No matching signal for

对于槽函数,如果写成了on_控件名_信号名的格式,会被qt认为是信号/槽的自动关联。如果再用connect函数显式的关联该函数,就会出现No matching signal for的错误。因此解决方法就是去掉“on_”前缀