首先谈一下Qt的两大机制:信号/槽机制和内省机制,其中内省机制对于实现信号/槽机制是必须的。
其次,来说一下在使用 信号/槽机制 是需要注意的一些基础性的问题:
1.信号/槽机制的使用:
a. 在运用connectt()函数实现信号/槽机制的时候,SIGNAL()和SLOT()两个函数的参数必须具有相同的顺序和类型,而且参数不应该是具体的参数名(而是参数的类型);
b. 在信号/槽机制中,保证成功连接的前提下,一个信号可以连接多个槽;多个信号可以连接一个槽;一个信号可以与另一个信号相连接;
c. 连接可以被移除,运用disconcert()函数,但是不是必须的,因为Qt可以自动移除这些连接。
2.槽的基础:
槽可以是虚函数,可以被重载,也可以和C++类一样,可以使public, protected和private三种类型的,可以被其他C++函数直接调用,其参数可以是任意类型的。
3.在使用Qt进行编译的时候一定要注意,MOC(元对象编译器)是通过 “*.h” 文件生成的,也即在 “*.h” 文件上运行,生成的 moc文件名应该 moc_*.cpp
4.在使用 信号/槽机制 时要注意一定要在类的头文件中进行成员和信号/槽等声明之前,一定要添加 Q_OBJECT 宏,使得 信号/槽 可以顺利通过connect()函数进行连接,进而实现槽函数对相应触发信号的响应。