1. 鲁班猫(LubanCat)与Qt¶
本章将主要介绍一下Qt和LubanCat-RK系列板卡,以及如何在板卡上开发。
1.1. Qt简介¶
1.1.1. Qt框架¶
Qt官网的一句话: One framework. One codebase. Any platform ,很好的概括了什么是Qt。
Qt是一个跨平台的 C++ 开发库,旨在简化桌面、嵌入式和移动平台的应用程序和用户界面的创建等, 并支持C++,Python,QML,Javascript等多种语言,适合多种技术、开发方式。
Qt经常被当做一个GUI库,用来开发图形界面应用程序, 但Qt除了可以绘制漂亮的界面外,还包含很多其它功能,比如数据库、多线程、图像处理、音视频处理、网络通信、文件操作等等。
1.1.2. Qt发展¶
Qt最早是1991年由挪威的Eirik Chambe-Eng和Haavard Nord开发的,1994年3月4日成立奇趣科技公司(Trolltech);
2000年奇趣科技公司为开源社区发布了遵循 GPL(GNU General Public License)许可证的开源版本;
2008年诺基亚公司收购了奇趣科技公司,并增加了 LGPL(GNU Lesser General Public License)的授权模式;
2011年3月Qt 商业授权业务出售给了芬兰IT服务公司Digia;
Digia于2014 年 9 月宣布成立 Qt Company 全资子公司,独立运营Qt商业授权业务。
等…
经过多年的发展,市面上也有很多基于Qt开发的应用程序:WPS、YY语音、豆瓣电台、虾米音乐、Autodesk Maya、 Autodesk 3ds Max、K Desktop Environment(KDE)、Photoshop等等。
1.1.3. 为什么选择Qt¶
跨平台特性 使用Qt开发的软件只需要做很少的适配甚至根本不需要修改任何源代码,就可以在大多数的平台上(桌面端、移动端、嵌入式设备、微控制器)运行。
授权 Qt支持商业许可证和开源许可证,对于社区开发以及商业开发都非常友好。
应用程序开发的一站式解决方案 ,优秀的框架,丰富的API,拥有大量的开发文档帮助文档,开发工具,支持多语言等等。
1.2. Qt工具和下载¶
Qt发展至今已经快三十年了,从Qt4到Qt5到Qt6已经经历了很多个版本的迭代, 同时也开发了qtdesignstudio,qtcreator,qt3dstudio等开发工具。
Qt框架和工具可在开源和商业许可证下使用,一般我们使用开源许可证进行开发, 商业许可的Qt包含额外的功能和生产力工具,有关详细信息,请参考 http://www.qt.io/download/ 。
1.2.1. Qt开发工具¶
首先我们要明白Qt是一个应用程序框架,是一套库,是一系列开发工具的组合, 这些开发工具或者库都是由Qt公司的程序员编写的,然后借助现有的编译工具编译出来的。
这套现有的编译工具叫 GNU 工具链。
GNU工具链(GNU toolchain)是一个包含了由GNU项目所产生的各种编程工具的集合。 这些工具形成了一条工具链(串行使用的一组工具),用于开发应用程序和操作系统。 GNU工具链在针对嵌入式系统的Linux内核、BSD及其它软件的开发中起着至关重要的作用。 GNU工具链中的部分工具也被Solaris, Mac OS X, Microsoft Windows (via Cygwin and MinGW/MSYS) 和 Sony PlayStation 3等等其它平台直接使用或进行了移植。
GNU工具链中包含的项目有:
GNU make:用于编译和构建的自动工具;
GNU编译器集合(GCC、G++):一组多种编程语言的编译器;
GNU Binutils:包含链接器、汇编器和其它工具的工具集;
GNU Debugger(GDB):代码调试工具;
GNU构建系统(autotools):Autoconf、Autoheader、Automake、Libtool
GNU 工具链是一套通用的工具链,而下面所说的 Qt 工具集 则是Qt特有的开发工具。
1.2.1.1. Qt 库¶
库文件一般指计算机上的一类文件,我们可以简单的把库文件看成一种代码共享,它提供给使用者一些可以直接拿来用的变量、函数或类。
库有两种静态库和动态库两种。其区别是:静态库在程序的链接阶段被复制到了程序中; 动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。 使用动态库的优点是系统只需载入一次动态库,不同的程序可以得到内存中相同的动态库的副本, 因此节省了很多内存,而且使用动态库也便于模块化更新程序。
Qt库,这里指Qt5的动态库(Windows下为dll文件,Linux下为so文件),在我们写代码的时候,只需要包含相关的头文件,就可以调用Qt的接口。
1.2.1.2. Qt 工具集¶
主要包含了开发使用的IDE(Intergrated Development Environment,集成开发环境)Qt Creator工具、帮助文档查看工具Qt Assistant和GUI设计工具Qt Debianer。
qmake 用于自动生成Makefile,用于简化跨不同平台的开发项目的构建过程;
uic 用于读取XML格式的用户接口定义(.ui通过与生成)文件Qt设计并创建一个相应的C++头文件;
moc 元对象编译器是处理Qt的C++扩展的程序;
rcc 资源编译器用于在构建过程中将资源嵌入到Qt应用程序中;
Qt Creator 是Qt官方推出的一款轻量级跨平台的集成开发环境(IDE);
Qt Assistant 用于查看Qt帮助文件格式的在线文档的工具;
Qt Designer 是用于使用Qt小部件设计和构建图形用户界面(GUI)的Qt工具;
Qt Linguist 为将Qt C++和Qt Quick应用程序翻译成本地语言提供了出色的支持;
Qt Design Studio 是一个UI设计和开发环境,用于创建动画UI并在台式机或Android和嵌入式Linux设备上进行预览。
Qt Creator 集成开发环境是我们最常用的工具,包括项目生成向导、高级的C++代码编辑器、浏览文件及类的工具、 集成了QtDesigner、图形化的GDB调试前端,集成qmake构建工具等。使用Qt Creator就能完成代码编写,程序编译、调试。
Qt Creator将用于构建和运行项目的设置分组为工具包,用于管理GNU工具链和Qt库版本,以简化跨平台和跨配置开发, 这个工具包叫 Qt构建套件(Kits) 。
1.2.2. Qt下载¶
一般Qt的工具,可以直接到 Qt官网 直接下载, 但也可以到 这里 查看,在这个地址中找到的其他版本的Qt开发工具,Qt源码,Qt库等等。 大致介绍一下下载目录,方便读者查阅:
snapshots 预览版,最新的开发测试中的 Qt 库和开发工具
online Qt 在线安装源
official_releases 官方正式发行版
new_archive 新开发工具安装包
archive 旧开发工具安装包
ministro 迷你版,目前是针对 Android 的版本
linguist_releases 翻译工具发行版
learning 文档教程和示范视频
development_releases 开发版
community_releases 社区定制的 Qt 库
其中archive,new_archive,official_releases中能下载到各种不同版本的Qt库、源码、开发工具。
1.3. 鲁班猫(LubanCat)简介¶
鲁班猫(LubanCat)是野火推出的运行Linux、Android的卡片电脑品牌,该系列卡片电脑硬件型号丰富,操作系统适配度高,开源教材资料众多,应用极其简单;
鲁班猫系统(LubanCat OS)是野火基于Debian、ubuntu系统制作的Linux发行版,为AI、工控、物联网、机器人以及编程教育等应用场景提供了便捷的示例和应用;
鲁班猫支持Ubuntu、Debian、Android等系统,提供多套教材, 覆盖纯应用层用户以及系统开发用户,即使初入行业的嵌入式小白, 也能根据我们的教程完成开发,而对资深的嵌入式工程师,则能加速产品二次开发过程。
1.4. LubanCat+Qt=?¶
使用传统的PC开发与运行纯软件类型的应用程序也非常方便,但想要控制外部硬件或电气设备时, 就需要扩展IO卡、运动控制卡等专用硬件,昂贵且复杂。
而手机尺寸大小的LubanCat板卡,集成了IO、PWM、I2C、SPI、USB、网络等各种硬件控制与通讯接口, 能轻松与外部设备进行交互,而且功耗低、工业级的稳定性、性价比高等特点,非常适用于创客DIY、工控产品中。
Qt的一大特性就是 跨平台,无论是Windows,Ubuntu…都能很好的适配。LubanCat和Qt的结合又会碰撞出怎样的火花呢?
野火将基于LubanCat板卡,提供以下Qt应用开发示例:
文件管理
音视频应用
硬件控制应用示例
等等 …