1. 鲁班猫(LubanCat)与Qt

本章将主要介绍一下Qt和LubanCat-RK系列板卡,以及如何在板卡上开发。

1.1. Qt简介

1.1.1. Qt框架

Qt官网的一句话: One framework. One codebase. Any platform ,很好的概括了什么是Qt。

broken

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库等等。 大致介绍一下下载目录,方便读者查阅:

broken
  • 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应用开发示例:

  • 文件管理

  • 音视频应用

  • 硬件控制应用示例

  • 等等 …