QT数据库-网络编程-打包

news2024/11/24 6:44:03

目录

一、讲解之前

二、数据库基本操作

三、模糊查询

二、编程之前

三、通信结构

一、设置应用图标(熟悉)

二、Debug和Release模式(掌握)

三、动态链接库(掌握)

四、打包(熟悉)


一、讲解之前

Qt本身并不具有数据库,只是Qt可能调用市面上主流的关系型数据库,支持:

Qt5版本开始,内置了一个SQLite数据库,并自带驱动程序。原因是SQLite是一个轻量级的数据库,在嵌入式领域广泛使用,通常使用扩展名.db .db3

由于Qt支持众多数据库的连接,因此为这些数据库的操作规定了统一的API接口,除了部分特殊接口有所差别外,使用的方式大致相似。

Qt项目使用数据库功能需要添加sql模块,在.pro文件中:

二、数据库基本操作

本次主要用到三个类:

  • QSqlDatabase

数据库连接类

当数据库连接打开成功时,会在项目的构建目录下生成SQLite对应的数据库文件,如下所示。

  • QSqlQuery

数据库操作类,数据库操作的验证可以通过SQLiteSpy软件,在项目的构建目录中打开数据库文件进行查看。

在执行SQL语句的过程中,注意不要拼接SQL语句,因为会引发安全性问题:SQL注入。Qt中使用SQL语句预处理+参数替换的方式避免SQL注入问题。

  • QSqlError

数据库异常类

三、模糊查询

模糊查询需要用到两个操作符:% _

  • % 表示匹配任意多个(0,1,...,n)字符
  • _ 表示匹配一个字符

_pple匹配的结果有:Apple Bpple ...

_ppl_匹配的结果有:Apple Applz ...

__匹配的结果:ax us ()

A%匹配的结果:所有A开头的单词

_a%匹配的结果:所偶第二个字母是a的单词

以上结果结合LIKE 或 GLOB 语句来执行,前者不区分大小写,后者区分大小写。

【例子】查询姓张的同学

SELECT * FROM stu WHERE name LIKE '张%';

二、编程之前

Qt要使用网络编程相关头文件,需要在.pro文件中添加network模块。

本次网络编程主要使用两个网络类:

  • QTcpServer

用于管理服务端连接的类,主要功能是管理。

部分函数如下:

函数功能:开始服务器监听

参数1:接受来自哪个IP地址的连接,QHostAddress类是IP地址封装类,默认值是QHostAddress::Any,表示接受任何IP地址的连接。

参数2:服务器的端口号,默认值0表示随机。

返回值:监听服务开启的结果。

函数功能:当客户端发起请求给服务器发射的信号。

函数功能:获取与客户端的连接通信的QTcpSocket对象

  • QTcpSocket

表示一个基于TCP的Socket连接类,主要功能是通信。

部分函数如下:

函数功能:连接到主机(服务器)参数1:目标主机的IP地址

参数2:目标主机的端口号

参数3:读写模式,默认为可读可写

获得连接对面的IP地址

获得对面的端口号

已经连接和断开连接发射的信号

每次新数据可读时发射的信号

三、通信结构

消息的发送是双向对等的,可以使用QTextSream类来完成,常用函数如下:

QTextStream::QTextStream(QIODevice * device)

构造函数,参数为基于哪个IO对象,支持所有的Qt的IO类。

QTextStream & QTextStream::operator<<(const QString & string)

成员函数运算符重载,输出运算符,支持链式调用

一、设置应用图标(熟悉)

设置应用的步骤如下:

1. 设计一款图标(或者下载),通常的图片格式(建议使用png)。建议使用256x256的分辨率。

2. 转换图片为图标的.ico格式,参考在线网站:

Convertio — 文件转换器

PNG转ICO, 在线转换器 - 转换视频, 音乐, 图像, PDF - Office-Converter.com

3. 把ico文件更改为合法名称,放置到工作目录下。

4. 在Qt Creator中,选中项目名称,鼠标右键,点击“添加新文件”

5. 在弹出的窗口中,按照下图所示进行操作。

6. 在弹出的窗口中,输入图标配置文件的名称 (例如:icon_config.rc),注意不要丢失文件扩展名.rc

7. 在项目管理页面,直接点击“完成”,可以在项目目录中看到多了一个.rc文件,双击进入编辑。

8. 添加下面的代码,双引号中的内容是图片文件的文件名。点击保存。

IDI_ICON1 ICON DISCARDABLE "icon.ico"

9. 进入.pro文件,添加下面的代码,icon_config.rc为图标配置文件的名称。点击保存。

RC_FILE += icon_config.rc

10. 运行程序,可以看到图标设置成功!

二、Debug和Release模式(掌握)

程序构建的模式可以在Qt Creator中设定,默认为Debug模式。

Debug模式下,生成的可执行文件中有很多调试信息,这样的程序其特点是运行速度较慢,并且体积比较大,适合程序员进行开发调试使用。

Release模式下,生成的可执行文件中一般不包含调试信息,而且体积比较小,运行速度相对较快,这样的程序适合发布给用户使用。

平常开发使用Debug模式,最后发布时可以改为Release模式,这两种模式的构建目录不同(开启影子构建)。但是目录中文件的结构是类似的,需要注意的是尽管这两种模式的构建目录都有debug和release文件夹,但是只有当前模式对应的文件夹下有exe可执行文件。

默认配置下,双击exe可执行文件(无论debug还是release)都是不能运行的,如下所示。

上面的窗口表示,单独的exe文件是不能执行的,因为exe文件仅仅是编写的代码而已,这个文件的运行还依赖于Qt的API调用接口。

三、动态链接库(掌握)

上面的弹窗表示可执行文件需要扩展名为dll格式的文件才能运行,dll格式是Qt在Windows操作系统下的动态链接库文件,实际上exe的执行不仅仅依赖于一个dll文件,而是若干个dll文件。

有以下两种补充dll文件的方法:

法一:直接补充所有常用的dll库文件,这种方法的优点是配置简单,缺点是有冗余的dll库,当前开发版本常用的dll库的下载连接链接如下所示:

百度网盘 请输入提取码

需要新建一个文件夹(不要包含中文字符),把dll文件与exe文件放到这个文件夹下,此时再次运行exe即可。

法二:使用Qt自带的windeployqt.exe程序提取部分exe文件运行所需要的dll文件,剩下的一部分需要手动补充。

使用方法看回放。

四、打包(熟悉)

本次使用打包工具是:isetup

安装包下载链接:https://pan.baidu.com/s/1ePF9WkLsDKSCpoXIGcR6rg 

安装过程避免使用中文字符路径,一直下一步即可。

打包过程如下:

1. 启动打包程序,按照下图所示进行操作。

2. 在新窗口中直接点击Next,如下所示。

3. 在新弹出的窗口中,依次输入应用名称、版本号、发布者、网址后,点击Next,如下所示。

4. 在新弹出的窗口中,可以更改软件的默认安装路径。然后,点击Next,如下所示。

5. 首先选择可执行文件,然后点击

,直接选择打包软件的根目录(即主文件夹),这样可以吧这个文件夹下的子文件都一并导入。

最后,点击Next执行下一步。

6. 在弹出的窗口中,根据个人需求来配置下面的选项后,点击Next。

7. 在弹出的页面中可以配置安装许可协议,直接点击Next忽略。

8. 在弹出的窗口,选择需要的安装包语言(没有中文......),点击Next。

9. 在弹出的窗口中,依次进行下图选项的配置后,点击Next

10. 在弹出的窗口中,直接点击Next。

11. 在弹出的窗口中,直接点击Finish

12. 询问是否编译配置好的脚本,点击“是”。

13. 会再次询问是否保存当前的配置脚本,以便于后期再次发布时,只更改版本号。

14. 等待编译完成即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/114935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FastDDS(10)Transport Layer传输层

传输层在DDS实体之间提供通信服务,负责通过物理传输实际发送和接收消息。DDS层将此服务用于用户数据和发现流量通信。然而,DDS层本身是独立于传输的,它定义了一个传输API,可以运行在实现该API的任何传输插件上。这样,它就不局限于特定的传输,应用程序可以选择最适合其需求…

公众号开发(4) —— 使用Senparc.Weixin SDK进行模板消息推送

微信公众号支持推送模板消息给特定用户&#xff0c;只要获取到公众号用户的openid向微信提供的接口发送post请求即可向特定用户推送模板消息&#xff0c;以下记录简单记录使用Senparc.Weixin SDK进行模板消息推送的过程。 1 模板消息建立 在微信公众号测试账号中添加如下消息…

数据结构之排序【冒泡排序和快速排序之一的实现及分析】内含动态演示图

引言&#xff1a; 今天分享一下一点小事迹&#xff0c;自从从学校回到家里&#xff0c;我已经好久没睡上一个好觉了&#xff0c;因为真的冷&#xff0c;莫名被窝总是感觉很冷&#xff0c;然后穿着袜袜的脚也是冰凉&#xff0c;所以每次早晨要起床的时候总是感觉非常的冷&#…

shell基础使用

一、hello world 首先建立一个tmux vim test.sh //再创建一个test.sh文件 进入文件后&#xff0c;创建一个如下命令&#xff0c;指明bash为脚本解释器 #! /bin/bash //相当与c头文件echo "hello world"运行方式 1.作为可执行文件 acs9e0ebfcd82d7:~$ chmod x test.s…

我是如何将2千万StackOverflow问答翻译成中文的?

大家好&#xff01;大家觉得如果需要翻译SO上全部问答可以怎么做呢&#xff1f;我讲讲我是怎么的&#xff0c;大家看看做得怎么样。 自我介绍 我是一名有10年开发经验的老程序员。做过大数据&#xff0c;做过Java程序员&#xff0c;也做过算法工程师&#xff0c;目前是一名大厂…

Spring Security的项目中集成JWT Token令牌安全访问后台API

Spring Security的项目中集成JWT Token令牌安全访问后台API引言JWT 简介jwt token 的适用场景jwt 的结构完整jwtjwt 的使用方式客户端获取jwt令牌访问受保护资源的具体流程Spring Security 安全框架下使用jwt token新建一个spring boot项目加入spring security 和 jwt 相关依赖…

五、传输层(二)UDP

目录 2.1 UDP概述 2.2 UDP的首部格式 2.3 UDP校验 2.1 UDP概述 UDP无须建立连接。因此不会引入建立连接的时延。 UDP为无连接状态。因此当服务器使用UDP时&#xff0c;一般能支持更多的活动客户机。 UDP分组首部仅有8B的开销&#xff0c;而TCP有20B的首部开销。 应用层…

后端思维篇:如何抽个上报模板

前言 大家好&#xff0c;我是田螺。 我的后端思维专栏好久没更新啦&#xff0c;本文是后端思维专栏的第六篇哈。我的整个后端思维专栏都是跟日常工作相关的哈。 最近刚好优化了安全上报这块的代码&#xff0c;抽了一个基础模板&#xff0c;看起来挺优雅的。所以今天手把手教…

〖产品思维训练白宝书 - 产品思维认知篇⑤〗- 学习 [产品思维] 需要做哪些准备?

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4e…

php wampserver的使用配置

php wampserver的使用配置wampserver1.php时区配置2.修改apache服务器端口号3.设置起始页4.设置web服务器主目录5.设置虚拟目录wampserver WampServer是Windows Apache Mysql PHP集成安装环境&#xff0c;在Windows操作系统下的apache、php和mysql的服务器软件。 1.php时区配…

RabbitMQ 第二天 高级 7 RabbitMQ 高级特性 7.2 Consumer Ack

RabbitMQ 【黑马程序员RabbitMQ全套教程&#xff0c;rabbitmq消息中间件到实战】 文章目录RabbitMQ第二天 高级7 RabbitMQ 高级特性7.2 Consumer Ack7.2.1 Consumer Ack7.2.2 Consumer Ack 小结7.2.3 消息可靠性总结第二天 高级 7 RabbitMQ 高级特性 7.2 Consumer Ack 7.2.…

12.25日周报

周报 代码行数&#xff1a; 周一 704 周二 481 周三 571 周四 589 周五 595 周六 520 周日 537 遇到的问题&#xff1a; 没用过的方法AtomicInteger Insert Proto currentTimeMillis RequestParam BufferedReader UriComponents RestTemplate OSS 不清楚在…

公众号开发(2) —— 盛派.net SDK + vue搭建微信公众号网页开发框架

需求&#xff1a;通过微信公众号菜单跳转到手机端网页&#xff0c;跳转后通过微信授权登录获取微信公众号用户的OpenId&#xff08;用户关注公众号后&#xff0c;用户在公众号的唯一凭证&#xff09;&#xff0c;通过OpenId和后台数据库用户信息绑定起来并实现一些业务逻辑。 技…

基于51单片机的电子闹钟设计

使用的单片机是 STC89C52 此设计可以 年 月 日 时 分 秒显示和闹钟功能 能通过8个按键自由调整 时 分 秒 闹钟响铃时间 带复位按键&#xff0c;要是模块抽风&#xff0c;摁复位按键即可&#xff01; 使用 LCD16020A 屏幕显示 屏幕电路设有电位器&#xff…

Tableau可视化设计案例-07 多边形地图和背景图地图

Tableau可视化设计案例 本文是Tableau的案例&#xff0c;为B站视频的笔记&#xff0c;B站视频 参考&#xff1a;https://www.bilibili.com/video/BV1E4411B7ef 参考&#xff1a;https://blog.csdn.net/lianjiabin/category_9826951.html 数据下载地址为&#xff1a;https://do…

Java项目:springboot药品管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目属于前后端分离的项目&#xff0c;分为两个角色药品管理员和取药处人员 药品管理员&#xff1a; 登录、退出、药品信息录入、药厂信息录入…

Huawei Certified ICT Professional work (一)

文章目录一&#xff0c; 要求二&#xff0c;搭建拓扑图三&#xff0c;配置接口IP和环回IP四&#xff0c;进行RIP版本的配置并且宣告网段五&#xff0c;实现不同版本的连通&#xff0c;在交界处配置对端的版本号六&#xff0c;R3访问R7的环回地址走R5&#xff0c;改变R4的度量值…

Java项目:SpringBoot+MyBatis送水公司管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 这个项目是一个基于SpringBootMyBatis的送水公司管理系统 管理员权限包括&#xff1a; 客户管理 送水工管理 送水历史管理 计算工资 统计送水数…

79页智慧应急指挥平台1 6 N体系建设方案

【版权声明】本资料来源网络&#xff0c;仅用于行业知识分享&#xff0c;供个人学习参考&#xff0c;请勿商用。【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间进行删除&#xff01; 完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 行业专网解决…

ARM_SMMU_下

SMMU驱动代码分析 本文主要分析linux kernel中SMMUv3的代码(drivers/iommu/arm-smmu-v3.c) linux kernel版本是linux 5.7, 体系结构是aarch64 SMMU的作用是把CPU提交给设备的VA地址&#xff0c;直接作为设备发出的地址&#xff0c;变成正确的物理地址&#xff0c;访问到物理内…