使用CMake编译
开始
使用find_package
找到QT库和文件,推荐方法是用target_link_libraries
命令,这个命令回自动的添加头文件目录,编译宏,地址无关代码和链接到qtmain这个库。
例子:
1 | cmake_minimum_required(VERSION 3.1.0) |
为了find_package
成功找到QT5,它必须在 CMAKE_PREFIX_PATH路径下,或者Qt5_DIR下必须有Qt5config.cmake文件。最简单的办法就是设置环境变量CMAKE_PREFIX_PATH为QT的按照目录。
同时CMAKE_AUTOMOC必须设置为ON。
详见https://cmake.org/cmake/help/latest/manual/cmake-qt.7.html#automoc#)
导入模块
引入模块可以像这样 Qt5target_link_libraries
. 实际的路径可以通过以下方式获取:
1 | find_package(Qt5 COMPONENTS Core REQUIRED) |
很少需要知道完整的路径,每一个QT5模块的库,可以用Qt5::
如果你的有自己的CMake文件,你必须设置debug或者release。例如
1 | find_package(Qt5 COMPONENTS Core REQUIRED) |
导入插件
插件同样支持导入, Qt Network, Qt SQL, Qt GUI, 和 Qt Widgets 模块都有关联的插件,他们都提供了插件列表,在Qt5<Module>_PLUGINS
变量中。
1 | foreach(plugin ${Qt5Network_PLUGINS}) |
Qt Core
https://doc.qt.io/qt-5/qtcore-index.html
核心功能
Qt将这些特性添加到C++中:
1.一种非常强大的机制,用于无缝对象通信,称为信号和插槽
2.可查询和可设计的对象属性
3.组织的层次化和可查询的对象树
4.用保护指针(QPointer)的自然方式拥有对象所有权
5.跨库边界的动态转换
线程和并发编程
Qt以独立于平台的线程类的形式提供线程支持,线程安全的发布事件的方式,以及跨线程的信号槽连接。
多线程编程也是一种有用的范例,它可以在不冻结应用程序的用户界面的情况下执行耗时的操作。Qt页面中的线程支持包含在应用程序中实现线程的信息。额外的并发类由Qt并发模块提供。
输入/输出、资源和容器
Qt提供了一种资源系统,用于组织应用程序文件和资产、一组容器和用于接收输入和打印输出的类:
- 容器类
- 序列化Qt数据类型
- 隐式共享
- 此外,Qt核心提供了一种独立于平台的机制,用于在应用程序的可执行文件中存储二进制文件。
Qt的资源系统
额外的框架
Qt Core还提供了Qt的一些关键框架:
- 动画框架
- 在Qt JSON支持
- 状态机框架
- 如何创建Qt插件
- 事件系统
代码下载
http://download.qt.io/archive/qt/5.13/5.13.0/submodules/
QT和JS交互调用