(10)Qt对象模型
  TEZNKK3IfmPf 2023年11月15日 18 0

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   21天前   34   0   0 C++
  TEZNKK3IfmPf   2024年04月19日   36   0   0 typescript数组编译器
  TEZNKK3IfmPf   21天前   23   0   0 指针C++
  TEZNKK3IfmPf   2024年05月31日   23   0   0 算法C++
TEZNKK3IfmPf