Qt是一种跨平台C++图形界面程序开发框架,在社会中各种行业都有着举足轻重的地位。
Qt为了实现对象与对象之间的通信,提出了信号与槽的概念。当一个对象发生改变会发送一个信号通知另一个对象执行一个函数,这个函数称为槽,信号只需要声明,不用定义,发送信号用emit关键字。当与槽函数关联的信号被发送时,槽函数就会调用。
信号与槽的连接方式有手动连接与自动连接。

手动连接的参数依次为:发送信号的对象,发送的信号,接收信号的对象,接收方法,连接类型。
连接时信号的参数可以比槽多,反之则不可以,信号与槽的关系可以一对一,一对多,多对一,并且信号可以与信号连接。连接类型有四种:
1.直连方式:DirectConnection
槽函数会在信号发送时直接被调用,槽函数运行于信号发送者所在线程。
2.排队方式:QueuedConnection
槽函数运行于信号接收者所在线程。发送信号之后,槽函数不会立刻被调用,等到接收者的当前函数执行完,进入事件循环之后,槽函数才会被调用。
3.自动方式:AutoConnection
默认的方式,如果接受者和发送者在同一个线程,则自动使用Qt::DirectConnection类型,若不在同一个线程,则自动使用Qt::QueuedConnection类型。
4.阻塞排队方式:BlockingQueuedConnection
槽函数的调用时机与Qt::QueuedConnection一致,不过发送完信号后发送者所在的线程会阻塞,直到槽函数运行完。接受者与发送者绝不能在一个线程,否则程序会死锁。
5.唯一连接方式:UniquConnection
这个flag可以通过按位或与以上四个结合在一起使用,设置后,当某个信号与槽连接时,再进行重复的连接就会失败。
Qt内存管理,即在创建类的对象时,为对象指定父对象指针。在父对象于某一时刻被销毁释放时,父对象会先遍历其所有子对象,并逐一将其销毁。



















