那日,qt群中聊天,无聊的我说起了qt相关的基础知识。
突然,群主出现,发出了斜眼笑的表情
建波问道:“你知道信号与槽用的是什么原理莫”?
好多小伙伴最开始都说,因该是使用了“回调函数机制”,于是我赶紧写了一段回调函数程序,以防自己忘记。
#include <iostream>
using namespace std;
void printICY()
{
cout << "icy yyds" << endl;
}
void printJb()
{
cout << "建波 天下第一" << endl;
}
void callback(void(*print)(void))
{
print();
}
int main()
{
callback(printICY);
callback(printJb);
getchar();
return 0;
}
输出结果:
icy yyds
建波 天下第一
我缓过神来,发现回调函数确实可以实现型号与槽,但是有太多的缺点,必须要知道对应的函数名,等一些列问题。
建波笑笑,“看来你门还是要把基础学好,看看源码”。
我想了想,此事并不简单,内部处理方式一定不是简单回调函数机制,看来我要看看源码研究研究。
我从书架上看到两本书,一本是qt编程书,另一本也是qt编程书,但是书籍中只是讲解了基本的槽函数的用法,也没有去讲解详细原理,顿时感觉自己失落了许多。
但我鼓足了勇气,开始了解了源码。
凡事总需要研究,才会明白。过去我常看书籍,信号与槽也还记得,可是不甚清楚。我翻开qt书籍一查,这本书没有原理,歪歪斜斜的每一页都写着“信号与槽”几个字。我横竖睡不着,仔细查看源码,才从代码里看了出来,满本都写着五个字是“观察者模式”!
未完待续!