qns到底怎样在Qt框架中正确声明信号与槽函数呢?
signals
QObject
void
cpp复制classMyClass:publicQObject
{
Q_OBJECT
signals:
voidmySignal(intvalue);
};
publicslots
protectedslots
privateslots
QObject
void
cpp复制classMyClass:publicQObject
{
Q_OBJECT
publicslots:
voidmySlot(intvalue);
};
声明好信号和槽函数后,需要使用
QObject::connect
cpp复制MyClassobj1,obj2; QObject::connect(&obj1,SIGNAL(mySignal(int)),&obj2,SLOT(mySlot(int)));
在较新的Qt版本中,也推荐使用基于函数指针的连接方式:
cpp复制QObject::connect(&obj1,&MyClass::mySignal,&obj2,&MyClass::mySlot);
这种方式在编译时进行类型检查,能更早发现错误。