
QT5软件开发实战系列教程
文章平均质量分 58
(订阅专刊即可看本专栏里全部文章)
从基础开始介绍QT5软件开发基础,专栏持续更新。
如果需要文章中配套的全部源码,请私信联系我,邮箱发送源码。
优惠券已抵扣
余额抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
DS小龙哥
CSDN专家博主、嵌入式领域优质创作者、华为云物联网论坛优质版主、51CTO专家博主、阿里云专家博主、掘金优质创作者、infoQ优质创作者、发烧友优质专栏创作者。
博客会持续分享单片机基础知识、各种完整的项目案例。 主要是分享的案例: 物联网项目开发案例、音视频项目开发案例。
展开
-
第19章 Windows10系统下QT搭建Android开发环境(2)
19.2 编译Android应用程序19.2.1 创建Android(ARM)虚拟设备在SDK目录下,运行“AVD Manager.exe”工具,创建虚拟设备。图19-2-1图19-2-2点击创建按钮之后,就填充设备的属性。开始在Windows上,模拟大于768M的RAM可能会失败,这取决于系统负载。如果模拟器无法启动,则尝试逐步减小RAM的值。图19-2-3 填充设备属性在填充设备属性时,如果发现“Target”和CPU/ABI“”选项是灰色的或者“CPU/A.原创 2021-10-26 20:47:24 · 565 阅读 · 0 评论 -
第19章 Windows10系统下QT搭建Android开发环境(1)
19.1 搭建QT环境19.1.1下载QT安装包下载地址:Index of /archive/qt/5.12/5.12.6下载的最新5.12版本,进行安装,在安装软件过程中,需要选择安装Android相关的编译器。图19-1-1图19-1-2 软件安装19.1.2 解决QT5.12在win10系统下经常无响应问题1、删除C:\Users\112662\AppData\Roaming文件下的QtProject文件夹2、设置兼容模式,且以管理员身份运行此程序3、关..原创 2021-10-26 20:46:53 · 1075 阅读 · 0 评论 -
18.5 设置Android程序的图标和签名文件
18.5 设置Android程序的图标和签名文件18.5 创建Android签名文件在项目页面,查看编译安卓APK详情页。图18-5-1 点击详情图18-5-2 创建签名文件18.6 创建AndroidManifest.xml文件在项目页面,点击 “Create Templates” 按钮,创建Android模板文件。图18-6-1 创建Android模板文件图18-6-2 创建的Android相关配置文件18.7 设置Android应用的版本信息和图标.原创 2021-10-26 20:46:26 · 845 阅读 · 0 评论 -
18.4 Android 下原生Linux驱动测试
18.4 Android 下原生Linux驱动测试18.4.1 Android设备运行C语言程序C语言源代码: 1 #include <stdio.h> 2 int main(int argc,char ** argv) 3 { 4 printf("hello world!\n"); 5 return 0; 6 }编译C语言源码:编译的时候加上-static静态选项root@xl:/test# arm-linux-gcc -static hell原创 2021-10-26 20:45:59 · 319 阅读 · 0 评论 -
18.3 ADB命令工具操作Android设备
18.3 ADB命令工具操作Android设备18.3.1 新建Android应用程序工程图 18-3-1 新建工程图18-3-2 选择项目路径名称图18-3-3 选择Android 套件多个编译套件都可以一起选择。图18-3-4 进入到UI设计界面图18-3-5图18-3-6 执行程序(快捷键:CTRL+R)图18-3-7 选择程序部署的设备图18-3-8 启动AVD 虚拟设备过程(需要一段时间启动)图18...原创 2021-10-26 20:45:27 · 711 阅读 · 0 评论 -
18.2 搭建QT on Android环境
18.2 搭建QT on Android环境18.2.1 查看所需要的安装包工具--->选项-->android选项图18-2-1 查看依赖的包18.2.2 安装JDKJDK官网下载地址:搜狗网址导航--网址大全,实用网址,尽在123.sogou.com图18-2-2 选择下载选项图18-2-3 遵守协议图18-2-4选择对应的版本下载建一个文件夹存放Android相关的环境配置。root@xl:/work# mkdir /work/..原创 2021-10-26 20:44:58 · 614 阅读 · 0 评论 -
18.1 安装QT Android版本
第18章 Ubuntu下QT搭建Android开发环境Linux下QT版本:QT for Android 5.5.1Ubuntu版本:14.04麒麟版开发板采用:友善之臂Tiny441218.1 安装QT Android版本18.1.1 下载QT软件下载地址:http://download.qt.io/archive/qt/5.5/5.5.1/图18-1-1 QT下载18.1.2 安装QT软件打开命令行终端,切换至超级用户。xiaolong@xl:/$ sudo原创 2021-10-26 20:44:23 · 428 阅读 · 1 评论 -
17.3 构建LinuxPC端QT软件上的ARM编译套件并进行测试
17.3构建LinuxPC端QT软件上的ARM编译套件并进行测试17.3.1 新建ARM专用的编译套件打开QT软件,开始新建ARM专用的编译套件。图17-4-1 新建编译套件新建一个编译器,编译器类型选择GCC,名称设置为ARM-GCC,编译器设置为交叉编译器路径下的arm-linux-g++,设置之后点击(apply)应用生效。图17-4-2 新建编译器指定qmake位置,qmake在QT源码目录_install/bin目录下。qmake作用是:根据QT工程文件,构..原创 2021-10-26 20:43:48 · 329 阅读 · 0 评论 -
17.2 搭建嵌入式QT运行环境
17.2搭建嵌入式QT运行环境17.2.1采用的嵌入式开发板介绍嵌入式开发板:采用友善之臂Tiny4412 Tiny4412开发板的内核、uboot、交叉编译器 均采用友善之臂光盘自带的包。交叉编译器的版本是arm-linux-gcc 4.5.1,该编译器版本对C++11支持不完善,如果需要编译更加高的QT版本,就需要升级交叉编译器,目前4友善之臂光盘提供的编译器最高只能支持QT5.6版本的交叉编译。最新的交叉编译器下载地址:https://www.veryarm.com/a...原创 2021-10-26 20:43:17 · 420 阅读 · 0 评论 -
17.1 搭建LinuxPC端QT编译环境
第17章 搭建嵌入式linux下QT5.6运行环境引用百度百科:Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。2012年原创 2021-10-26 20:42:48 · 367 阅读 · 0 评论 -
第16章 QT应用程序发布(2)
安装包制作工具有非常多可以选择,可以使用HAP_Setup2GO1911.exe、小兵安装包制作工具、HMNISEditPortable.exe、AdvancedInstaller、易量安装、等等工具进行打包,百度可以下载到。“易量安装”制作工具使用示例下载地址:易量安装下载_搜狗下载图16-4-1图16-4-2 新建脚本向导图16-4-3 图16-4-4 根据提示填充信息图16-4-5 根据提示填充信息图16-4-6 设置安装目录...原创 2021-10-26 20:42:18 · 280 阅读 · 0 评论 -
第16章 QT应用程序发布(1)
16.1发布方式Qt发布的时候,通常使用两种方式:(1)静态编译(2)动态编译静态编译:把相关联的库一并引入可执行程序,虽然发布简单,但可执行程序较大(会涉及到版权问题)。动态编译:相关联的库,以dll的形式引用,不被包含进可执行程序,发布不方便,但可执行程序较小。16.2动态打包发布16.2.1 准备工作Qt 官方开发环境里自带了一个工具:windeployqt.exe。windeployqt 工具可以自动复制插件文件夹和 dll文件、qm文件。...原创 2021-10-26 20:41:49 · 373 阅读 · 0 评论 -
第15章 基于QT5打印机设备开发
第15章 基于QT5打印机设备开发QT5支持打印机的相关类如下:QPrinter类是在打印机上绘制的绘图设备。QPrintDialog类提供了一个用于指定打印机配置的对话框。QPrintPreviewDialog类提供了一个对话框,用于预览和配置打印机输出的页面布局。15.1 QPrinter类头文件 :#include <QPrinter> qmake :QT += printsupport继承类 :QPagedPaintDevice15.1.1 QPr原创 2021-10-26 20:41:20 · 758 阅读 · 0 评论 -
第14章 基于QT5串口设备开发(2)
14.4 串口助手开发示例1 uart_mainwindow.ui文件2 uart_mainwindow.cpp#include "uart_mainwindow.h"#include "ui_uart_mainwindow.h"/* * 设置QT界面的样式*/void UART_MainWindow::SetStyle(const QString &qssFile) { QFile file(qssFile); if (file.open(QFi.原创 2021-10-26 20:40:50 · 452 阅读 · 0 评论 -
第14章 基于QT5串口设备开发(1)
14.1QT下串口编程介绍14.1.1 串口协议介绍串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双.原创 2021-10-26 20:40:13 · 511 阅读 · 0 评论 -
13.6.3 程序案例:BLE低功耗蓝牙调试助手
13.6.3程序案例:BLE低功耗蓝牙调试助手(配套代码CH13-02)(1) mainwindow.cpp文件代码#include "mainwindow.h"#include "ui_mainwindow.h"/* * 设置QT界面的样式*/void MainWindow::SetStyle(const QString &qssFile) { QFile file(qssFile); if (file.open(QFile::ReadOnly)) { .原创 2021-10-26 20:39:44 · 1441 阅读 · 0 评论 -
13.6.2 常用函数介绍
13.6.2 常用函数介绍(1) 返回UUID的匹配特性QLowEnergyCharacteristic QLowEnergyService::characteristic(const QBluetoothUuid &uuid) const返回uuid的匹配特性; 否则为无效特征。如果此服务discoverDetails()实例尚未调用或者没有与uuid匹配的特征,则返回的特征无效。(2) 返回关联的所有特性QList<QLowEnergyCharacterist.原创 2021-10-26 20:38:48 · 437 阅读 · 0 评论 -
13.6.1 QLowEnergyService类介绍
13.6 低功耗蓝牙设备的数据收发13.6.1 QLowEnergyService类介绍QLowEnergyService类表示蓝牙低功耗设备上的单个服务。QLowEnergyService可以访问蓝牙低功耗服务的详细信息。允许读取和写入所包含的数据并通知数据更改。蓝牙低功耗外围设备可以包含多种服务。 每个服务又可能包括更多的服务。 该类代表外围设备的单个服务,并通过QLowEnergyController :: createServiceObject()创建。 type()指示此服务是主服原创 2021-10-26 20:39:13 · 956 阅读 · 0 评论 -
13.5 低功耗蓝牙设备的访问
13.5 低功耗蓝牙设备的访问13.5.1 QLowEnergyController类介绍QLowEnergyController类提供对低功耗蓝牙设备的访问。QLowEnergyController充当蓝牙低功耗开发的入口点。低功耗蓝牙定义了两种类型的设备: 外围设备角色和中央设备角色。每个角色执行不同的任务。外围设备提供中央设备使用的数据。一个例子:可能外围设备是一个湿度传感器,它可以测量冬季花园的湿度。诸如移动电话之类的设备可以读取传感器的值,在这种情况下,传感器是外围设备,.原创 2021-10-26 20:38:21 · 790 阅读 · 0 评论 -
13.4 获取蓝牙设备信息
13.4 获取蓝牙设备信息QBluetoothDeviceInfo类存储有关蓝牙设备的信息。QBluetoothDeviceInfo提供有关蓝牙设备的名称,地址和设备类别的信息。13.4.1 函数介绍13.4.1 获取设备地址QBluetoothAddress QBluetoothDeviceInfo::address() const13.4.2 获取设备UUIDQList<QBluetoothUuid> QBluetoothDeviceInfo::servic原创 2021-10-26 20:37:48 · 1072 阅读 · 0 评论 -
13.3.4 蓝牙程序案例: 蓝牙串口调试助手
13.3.4蓝牙程序案例:蓝牙串口调试助手本程序使用手机蓝牙与HC-05串口蓝牙模块实现通信,进行数据传输。 (配套代码CH13-01)(1) Main.c文件代码#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return..原创 2021-10-26 20:37:20 · 1553 阅读 · 0 评论 -
13.3.3 信号介绍
13.3.3 信号介绍(1) 连接断开与连接信号通知void connected() //设备建立连接发出信号void disconnected()//设备断开连接发出信号(2) 错误信号void error(QBluetoothLocalDevice::Error error)错误枚举值:上面已经介绍过了。(3)状态发生改变发出此信号void QBluetoothSocket::stateChanged(QBluetoothSocket::SocketState s..原创 2021-10-26 20:36:38 · 225 阅读 · 0 评论 -
13.3.2 socket函数介绍
13.3.2 socket函数介绍(1) 构造函数QBluetoothSocket(QBluetoothServiceInfo::Protocol socketType, QObject *parent = Q_NULLPTR)QBluetoothSocket(QObject *parent = Q_NULLPTR)(2) 中止当前连接并重置套接字void QBluetoothSocket::abort() //关闭连接void QBluetoothSocket::close() .原创 2021-10-26 20:36:10 · 330 阅读 · 0 评论 -
13.3.1 QBluetoothSocket类介绍
13.3 蓝牙数据收发处理(socket)13.3.1 QBluetoothSocket类介绍QBluetoothSocket类用于连接蓝牙设备进行数据收发服务器。QBluetoothSocket支持两种协议类型:L2CAP和RFCOMM。(1)L2CAP是一种低功耗数据报导向的蓝牙套接字,Android不支持L2CAP套接字连接。(2)RFCOMM是一个可靠的,面向流的套接字。 RFCOMM可以模拟一个RS-232串行端口。要创建与蓝牙服务的连接,请创建适当类型的套接字并调用c..原创 2021-10-26 20:35:38 · 989 阅读 · 1 评论 -
13.2 设置本地蓝牙设备
13.2 设置本地蓝牙设备13.2.1 介绍QBluetoothLocalDeviceQBluetoothLocalDevice类允许访问本地蓝牙设备。QBluetoothLocalDevice类提供获取和设置本地蓝牙设备状态的功能。比如:设置本地蓝牙模式、打开本地蓝牙、关闭本地蓝牙等等。13.2.2函数介绍(1) 构造函数QBluetoothLocalDevice(QObject *parent = Q_NULLPTR)QBluetoothLocalDevice(cons.原创 2021-10-26 20:35:09 · 923 阅读 · 0 评论 -
13.1 扫描获取周围可见的蓝牙设备
第13章 基于QT5蓝牙设备开发蓝牙( Bluetooth® ):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。蓝牙技术最初由电信巨头爱立信公司于1994年创制,当时是作为RS232数据线的替代方案。蓝牙可连接多个设备,克服了数据同步的难题。如今蓝牙由蓝牙技术联盟(Bluetooth Special Interest Group,简称SIG)管理。蓝牙技术联盟在全球拥有超过25,000家成员公司,它们分布在原创 2021-10-26 20:34:39 · 430 阅读 · 0 评论 -
12.7 网络编程案例
12.7 网络编程案例12.7.1 TCP多线程时间服务器主要功能:子类化方式继承QTcpServer与QThread,创建TCP服务器,等待客户端连接,连上新的客户端之后,服务器获取本地时间,将时间发送给客户端,再断开连接,销毁线程。 (配套代码CH12-12)1. main.cpp代码#include "ui_widget.h"#include <QApplication>int main(int argc, char *argv[]){ QApplica.原创 2021-10-26 20:34:08 · 264 阅读 · 0 评论 -
12.6.4 获取北京时间实例
12.6.4 获取北京时间实例下面实例中解析的是JSON格式时间信息。北京时间获取地址:http://api.k780.com:88/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json解析的JSON文本格式如下:{ "success":"1","result": { "timestamp":"1481596461", "datetime_1":"原创 2021-10-26 20:33:38 · 552 阅读 · 0 评论 -
12.6.3 解析JSON文档相关的类介绍
12.6.3 解析JSON文档相关的类介绍QT提供的QJsonDocument类可以用来读取和写入JSON格式的文档。 QJsonDocument类包含了完整的JSON文档操作方法,既可以读取基于UTF-8编码的文本,又可以读取和写入Qt自己的二进制格式数据。利用isNull()函数可以查询解析文档的有效性。创建json格式文档示例(QJsonObject)QJsonObject json;json.insert("name", QString("Qt"));json.insert("ve原创 2021-10-26 20:33:06 · 262 阅读 · 0 评论 -
12.6.2 常用的Json库
12.6.2 常用的Json库1.JsonCppJsonCpp是一个C++用来处理JSON数据的开发包。网址:http://jsoncpp.sourceforge.net/2.cJSONcJSON是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的JSON解析器。网址:http://sourceforge.net/projects/cjson/3.QJsonQJson是一个基于Qt的开发包用来将JSON数据解析成QVariant对象,JSO...原创 2021-10-26 20:32:30 · 273 阅读 · 0 评论 -
12.6.1 JSON文件格式介绍
12.6 获取北京时间:解析JSON文件JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。原创 2021-10-26 20:32:01 · 251 阅读 · 0 评论 -
12.5.4 获取手机归属地信息实例
12.5.4 获取手机归属地信息实例下面是一个解析XML格式的手机归属地信息,通过QXmlStreamReader类进行解析。(配套代码CH12-10)XML格式结果如下:<?xml version="1.0" encoding="UTF-8"?><root><success>1</success><result><status>ALREADY_ATT</status><phone>138原创 2021-10-26 20:31:30 · 233 阅读 · 0 评论 -
12.5.3 获取天气预报实例
12.5.3 获取天气预报实例下面代码通过百度提供的API接口获取天气预报信息。通过QT提供的QDomNode 、QDomDocument、QDomElement相关类进行解析。百度开发者API接口申请:登录百度帐号访问百度天气预报的格式:http://api.map.baidu.com/telematics/v2/weather?location=城市名称&ak=密匙城市名称:需要查询的城市拼音。密匙:在百度开发者栏目进行申请。返回结果: XML格式文本。示例结果原创 2021-10-26 20:31:01 · 273 阅读 · 0 评论 -
12.5.2 解析XML文件相关类介绍
12.5.2解析XML文件相关类介绍在QT下解析XML文件需要用到QDomNode 、QDomDocument、QDomElement、QDomNodeList类。这些类不属于QT核心模块,在使用的时候需要在pro工程文件中加上QT+= xml。其中QDomDocument类代表整个XML文档;从概念上讲,它是文档树的根,并提供主要访问文档的数据接口。QDomElement类代表一个元素的DOM树。QDomNodeList类保存了QDomNode对象的列表。QDomNode类保存了所有节点的DOM.原创 2021-10-26 20:30:32 · 347 阅读 · 0 评论 -
12.5.1 XML文件格式介绍
12.5 获取天气预报:解析XML文件现在很多网站服务器提供了常用API接口,想要实现获取天气预报比较方便。其中主要方法就是使用QNetworkAccessManager类get方法调用网站服务器提供的API函数接口(一般接口都需要收费),来实现想要的功能。一般像获取天气预报这些类似的信息时,服务器返回的都是XML或者JSON格式的数据。本小节就以天气预报为例子,介绍怎么通过QT获取服务器的天气预报信息,并解析服务器返回的XML格式数据。12.5.1XML文件格式介绍XML是“Extent.原创 2021-10-26 20:30:04 · 362 阅读 · 0 评论 -
12.4.3 实现网络文件下载
12.4.3 实现网络文件下载本小节通过QNetworkReply类实现浏览器的下载功能,可以下载互联网上的文件。因为QNetworkReply继承于QIODevice类,所以当网络上有数据可读时,会触发readyRead()信号,可以在readyRead()信号关联的槽函数里读取数据。要完成网络文件下载功能,还需要用到QNetworkReply类的downloadProgress()和finished()信号。这两个信号的原型如下:[signal] void QNetworkReply::原创 2021-10-26 20:29:31 · 509 阅读 · 0 评论 -
12.4.2 在线创建二维码
12.4.2 在线创建二维码生成二维码功能在目前比较常用,下面将通过QNetworkAccessManager类与其他网站提供的数据接口交互,创建二维码图片。程序用到的函数和编程模型与上一节实现的“简易浏览器”类似。常用的数据接口API网站:k780数据二维码创建实例运行界面如下:(配套代码CH12-7)图12-4-4 二维码生成效果1.“widget.ui”UI设计界面示例图12-4-5 UI设计界面2.“widget.cpp”文件代码示例#include "widg原创 2021-10-26 20:29:02 · 223 阅读 · 0 评论 -
12.4.1 实现网页浏览
12.4 HTTP网络通信前面介绍的QTcpSocket、QUdpSocket、QTcpServer都是网络传输层的类,属于底层的网络编程接口。如果需要进行Http通信,比如:浏览网页、请求网络数据、下载上传文件等操作时,就需要用到更高层次,更加强大的编程接口。QT5版本中关于Http通信相关的类有QNetworkReply、QNetworkAccessManager、QNetworkRequest等。其中QNetworkReply类负责对网络请求进行响应;QNetworkRequest类负责向网络原创 2021-10-26 20:28:31 · 191 阅读 · 0 评论 -
12.3.6 UDP组播穿透路由器
12.3.6 UDP组播穿透路由器局域网内的两台机器如果隔有路由器,那么这两台机器之间不能进行广播通信,但是我们可以换成组播的通信的方式,达到相互通信的效果。服务器端QUdpSocket udp_socket; udp_socket.bind(QHostAddress::Any, udp_listen_port, QUdpSocket::ReuseAddressHint); QHostAddress mcast_addr("224.0.0.17"); udp_socket.setS原创 2021-10-26 20:28:00 · 1436 阅读 · 0 评论 -
12.3.5 子线程创建UdpSocket实例
12.3.5子线程创建UdpSocket实例实际开发中进行网络编程都会用到多线程,一般将数据接收代码放在子线程,主线程实现更新界面。下面编写的示例,是将UDP套接字相关代码放在子线程中,在子线程中完成了数据的接收;收到数据之后,通过信号传递给主线程,再更新显示到UI界面上。注意:本实例没有重写QThread类,是通过QObject::moveToThread函数将对象移动到新的线程中执行,这样可以解决主线程和子线程之间跨线程发送信号导致的一些错误问题。(配套代码CH12-8)运行效果如下:.原创 2021-10-26 20:27:22 · 574 阅读 · 0 评论