Qt设计GUI界面应用程序,类似于Windows的Visual Studio设计界面,最主要的就是消息机制,如果vs下叫MFC机制,那么Qt就叫信号槽机制。MFC采用消息映射机制,每个类都有一个消息映射,与该类有关的消息都出现在该类的消息映射中。类的消息映射把一组消息映射宏组成一个消息映射表,每项消息映射宏都将一个函数和一个特定的消息关联起来,在出现给定的消息时,将调用对应的函数。
BEGIN_MESSAGE_MAP(CMFCView, CView)
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_MESSAGE(UserMessage,UserFun())
END_MESSAGE_MAP()
有些是系统消息如ID_FILE_PRINT,对应的管理消息处理函数就是CView::OnFilePrint,也可以自定义一个消息UserMessage,然后对应消息处理函数UserFun()。
而Qt中有个信号函数,它的作用只是发送消息,不知道谁接受,可能有一个接受,也可能有多个接收者。这样代码独立的非耦合的。
Qt中还有个槽函数,它是个普通函数,只管接收,不管通信,有信号给它,它就处理,不管谁发的怎么发的。
Qt中是谁把信号+槽对应起来的呢?就是QObject,信号函数和槽函数彼此不知道,由QObject把双方关联绑定起来的。比如一个按钮的点击信号,绑定到上层窗口的close关闭槽函数上,那么按钮点击关闭窗口。所以基本步骤是:
1、定义信号函数
2、定义槽函数
3、绑定信号函数和槽函数
4、