Q_OBJECT宏
发布时间
阅读量:
阅读量
在类定义的起始位置,必须添加Q_OBJECT宏,这是所有需要定义信号或槽函数的类所必需的。若未包含Q_OBJECT,则无法在QT框架中使用信号与槽机制,同时该宏必须置于类定义的最前端。
1.QT的信号与槽机制介绍
1.1 信号与槽
QT 编程的核心机制在于信号和槽的设计,若想深入掌握 QT 技术,就必须对这一机制有充分的理解。作为一种高级接口,信号和槽主要用于实现对象间的通信,它不仅是 QT 的重要特征,也是 QT 与其他工具包之间的重要区别之处。该机制由 QT 独立开发,与标准的 C/C++ 语言无关,因此在处理信号和槽时需要借助 moc(Meta Object Compiler)这一 QT 提供的工具。moc 是一个 C++ 预处理器程序,能够自动为事件处理生成必要的附加代码。
在常见的 GUI 工具包中,窗口小部件 (widget) 通常通过回调函数来响应其能触发的各种操作,并且这些回调函数往往以函数指针的形式存在。然而,在 QT 中,这种复杂的函数指针被信号和槽所取代,从而简化了通信程序的编写过程。信号和槽可以传递任意数量及任意类型的参数,并且具有完全的类型安全性,避免了像回调函数那样可能引发 core dumps 的问题。
所有从 QObject 或其子类(如 Qwidget)派生出的类都可以包含信号和槽。当对象的状态发生变化时,它会
全部评论 (0)
还没有任何评论哟~
