C++GUIQT4编程1第1页第3讲信号与槽C++GUIQT4编程2第2页教学目标•理解信号与槽的概念;•掌握信号与槽的机制;•掌握定义信号与槽的几种方法;C++GUIQT4编程3第3页主要内容1
信号与槽的概念2
信号与槽的关联3
建立信号与槽的方法C++GUIQT4编程4第4页1、信号与槽的概念•信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解
•信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方
•信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C++语言,因此要正确的处理信号和槽,必须借助一个称为moc(MetaObjectCompiler)的QT工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码
C++GUIQT4编程5第5页1、信号与槽的概念•在我们所熟知的很多GUI工具包中,窗口小部件(widget)都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针
•但是,在QT中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了
•信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生coredumps
C++GUIQT4编程6第6页1、信号与槽的概念•所有从QObject或其子类(例如Qwidget)派生的类都能够包含信号和槽
当对象改变其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号
•这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用
槽用于接收信号,但它们是普通的对象成员函数
一个槽并不知道是否有任何信号与自己相连接
而且,对象并不了解具体的通信机制
C++GUIQT4编程7第7页你可以将很多信号与单个的