建立了teacher,student文件,t,s为两个类的指针,teacher类有hungery信号,student有treat方法,想用函数连接,在teacher类发出信号后学生类接受
但是一直显示参数不匹配
treat有两个重载,无法确定是哪一个,建议保留只有一个参数的这个函数,然后根据传入参数是否为空进行判断。
#ifndef QT_NO_META_MACROS
#ifndef QT_NO_DEBUG
# define QLOCATION "\0" __FILE__ ":" QT_STRINGIFY(__LINE__)
# ifndef QT_NO_KEYWORDS
# define METHOD(a) qFlagLocation("0"#a QLOCATION)
# endif
# define SLOT(a) qFlagLocation("1"#a QLOCATION)
# define SIGNAL(a) qFlagLocation("2"#a QLOCATION)
#else
# ifndef QT_NO_KEYWORDS
# define METHOD(a) "0"#a
# endif
# define SLOT(a) "1"#a
# define SIGNAL(a) "2"#a
#endif
这两个宏是将信号与槽函数的名称(函数名以及参数)转换为字符串。在方法名称前面给个标识0,在槽函数前面给个标识1,在信号函数前面给个标识2,这3个标识为后面解析参数是所属哪种类型的起到很大的作用。
还有我们注意到,这里的宏是将信号与槽的名称转换为字符串,这里的名称包括了参数。于是我们可以得出:信号与槽的参数不能包括宏。如果包括宏,是要等里面的宏先展开然后SLOT和SIGNAL再展开还是先SLOT和SIGNAL展开呢?这都是没有定义的。
信号连接的是槽函数,普通函数不行。你的treat()函数是public:,不是槽函数,应该是public slots:
public slots:
void treat();
void treat(QString foodname);