0
点赞
收藏
分享

微信扫一扫

(10)Qt对象模型

船长_Kevin 2022-07-12 阅读 61


Qt “扩展”了标准 C++。所谓“扩展”,实际是在使用标准 C++ 编译器编译 Qt 源程序之前,Qt 先使用一个叫做 moc(Meta Object Compiler,元对象编译器)的工具,先对 Qt 源代码进行一次预处理。

Qt 使用 moc,为标准 C++ 增加了一些特性:

  • 信号槽机制,用于解决对象之间的通讯,这个我们已经了解过了,可以认为是 Qt 最明显的特性之一;
  • 可查询,并且可设计的对象属性;
  • 强大的事件机制以及事件过滤器;
  • 基于上下文的字符串翻译机制(国际化),也就是 tr() 函数,我们简单地介绍过;
  • 复杂的定时器实现,用于在事件驱动的 GUI 中嵌入能够精确控制的任务集成;
  • 层次化的可查询的对象树,提供一种自然的方式管理对象关系。
  • 智能指针(QPointer),在对象析构之后自动设为 0,防止野指针;
  • 能够跨越库边界的动态转换机制。

通过继承​​QObject​​类,可以获得这些特性。

 

​QObject​​​是以对象树的形式组织起来的。当你创建一个​​QObject​​​对象时,会看到​​QObject​​​的构造函数接收一个​​QObject​​​指针作为参数,这个参数就是 parent,也就是父对象指针。这相当于,在创建​​QObject​​​对象时,可以提供一个其父对象,我们创建的这个​​QObject​​​对象会自动添加到其父对象的​​children()​​列表。当父对象析构的时候,这个列表中的所有对象也会被析构。(注意,这里的父对象并不是继承意义上的父类!

 

​QWidget​​​是能够在屏幕上显示的一切组件的父类。​​QWidget​​​继承自​​QObject​

举报

相关推荐

0 条评论