赞
踩
有些同学想看qt的源码 可能找不到地方入手
这里简单的说一下
1.首先安装qt时 一定要勾选安装了source源码才行 否则没有
这里就不多说了
2.说一下qt的结构目录吧
5.12.11 这是以qt版本命名的文件夹 里面包含了 源码 + qt类库
docs 文档
examples qt的实例demo
Tools 是开发工具集 比如 QtCreator mingw
vcredist 就是 vc运行库
ok 主要看一下 5.12.11
这一层 包含类库 和 源码src
mingw 是qt 的 然后 msvc 就是 微软的 里面就是 各种qt的 dll 比如 qt5core qt5gui
3.主要说下源码结构src
这么多文件夹 从哪里下手??
不要慌
因为qt 提供的类库太多了
比如各种图表 多媒体 串口 网络 打印机 xml web引擎
所以这些都不是qt的核心模块, 可以说是附带的扩展模块
所以上面的可以附选择安装和使用,
主要说一下 qtbase
base 里面还有不少, 安卓, opengl 数据库 gui 网络network ,
随便挑一个说一下吧 这一层基本结构都一样了
看一下 corelib
就看 thread 吧
仔细看 他的文件 都带有个平台相关的后缀 为什么?
qt 跨平台啊 , 每个平台底层的实现都不一致 ,所有针对不同平台 有不同的实现
基本上qt的一个类 都是由这几个文件实现的 拿qthread 举例
qthread.h
qthread.cpp
qthread_p.h
qthread_win.cpp
qthread_unix.cpp
//qthread_mac.cpp // mac
//qthread_linux.cpp // linux 安卓等等
qthread.h 为 QTherad 声明文件
实现都是在private 中 QThreadPrivate 也就是在qthread_p.h中
然后 QTherad 与 QThreadPrivate 这俩类的实现其实都在一个cpp中实现 是在qthread.cpp
然后在继续往下 private会根据平台 比如你是win 就会调用 qthread_win.cpp 实现
你是unix 就qthread_unix.cpp 的实现
这样做有什么好处??
第一个你使用只需要关心 qthread.h 就好, 比如 qthread要更新实现,上层接口不动 ,内部就可以更改private的实现
减少依赖和耦合
第二个是隐藏了实现细节
下图是qt 类文件结构 截图
qthread.h
qthread_p.h
qthread.cpp
看到了吧 QThreadPrivate 与 QThread 的实现 都是在 qthread.cpp
qthread_win.cpp 看到了吧 还是基于 windows的 beginThread 进行的一层封装
ok 结束
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。