好久才搞明白这几个词的意义:示例如下
mylayer.h
class mylayer
{
..
public:
mylayer();
~mylayer();
void dosomething();
..
singals:
void mylayerchange();
slots:
void printlayername();
..
}
mylayer.cpp
#include"mylayer.h"
mylayer::mylayer()
{
connect(this,SIGNAL(mylayerchange()),this,SLOT(dosomething()));
}
void mylayer::dosomething()
{
if(1<2)
emit mylayerchange();
return;
}
void mylayer::printlayername()
{
char *name="dsfsbaknvvfd";
print("%s",name);
}
此实例可以看出,SIGNAL中的函数,不需要实现,系统会自动实现,只要要在头文件中声名即可。
此外,在调用信号和槽的时候,信号和槽的函数中的参数只能有类型,例如int,不能有变量。例如写成SLOT(setValue(int value))是不对的,写成SLOT(setvalue(int))是正确的。