Qt学习及使用_第1部分_认识Qt---学习目的及技术准备
前言
学以致用,通过QT框架的学习,一边实践,一边探索编程的方方面面.
参考书:<Qt 6 C++开发指南>(以下称"本书")
标识说明:概念用粗体+倾斜.重点内容用(加粗黑体)---重点内容(红字)---重点内容(加粗红字),
本书原话内容用深蓝色标识,比较重要的内容用加粗倾斜下划线深蓝色标识
引入
笔者看学习Qt的目的,以及学习前需要哪些技术上的准备.
学习目的
可能有人会奇怪学习目的不就是使用吗,为什么还要提这个?道理很简单,知其然和知其所以然
1.学习Qt为了使用
Qt框架建立一个GUI界面,实现一些功能.例如Qt creator(Qt的程序界面)是一个Qt设计的程序,如下图
他包含了窗口,标题栏,菜单栏,下拉菜单 等元素.
使用框架是一种"所见即所得"的编程方式,不需要程序员和底层打交道,与系统内核以及硬件交互的代码都被封装进框架,程序员面向应用层专注于应用,大大简化了程序的编写.
Qt和其他框架相比,还有两个优势:一是基于Windows,有一台PC就可以干;二是支持GUI编程,鼠标点几下内容就出来了,是一种最简易的"所见即所得"的框架,这也是很多人选择他的原因.
2.学习Qt为了明白程序结构,为写框架做准备
如果学习框架的目的只是为了使用框架,要求未免有点低了.笔者认为只会使用框架的程序员不能称为"真正"的程序员.有人觉得会用也不错了,是的,专注于使用框架且能写出满意的效果,也达到目的了.
深入理解框架的原因至少有以下两方面:
1.项目升级更新,要想做出更"炫"的效果,就需要框架支持.如果不要框架支持自己写,不能通用.
2.要写属于自己的框架.在学习Qt的过程中理解所有框架都包含的一些东西
简单的说,目的1---使用框架不需要读源码,目的2---深入理解框架需要读源码.
技术准备
本书说明中要熟悉C++才能读本书.C++语法又多又杂,什么叫"熟悉",什么叫"精通",并没有一个标准去衡量.
笔者认为目的1---使用框架,不需要太多的C++知识.本书前面几个章节,有一些新的知识,后面的章节几乎大同小异---不是说内容大同小异,是使用者的使用方法大同小异.因为很多东西都封装过了,有一种饭做好喂到嘴边那种感觉.枚举和类继承是用得比较多的(笔者的C++基础里也有相关内容可参看)
目的2---深入理解框架,需要的知识比较多了.像笔者用C++11,查看源码里有constexpr等C++14,[[nodiscard]]等C++17的内容.所以C++语法懂得越多越好,不过也不用太在意.现在用的C++几乎都是以11为基础,后面的版本增加了一些内容而已,可以边看边学.
此外,Qt使用面向对象的编程方式,模块基本上全是以类的形式出现.所以面向对象的知识也是需要的("面向对象"有没有精通一说呢?笔者也不知道).如果说熟练运用面向对象有个标准的话,就是设计模式用得是否熟练.但设计模式与具体使用场景有关.如果刻意去学设计模式,他不能像学编程语言一样有立竿见影的效果.在程序员"不经意"的设计好一个类解决问题后,自然明白使用到了哪种设计模式.说的直白一点,设计模式是一种"意会",看起来难本质上不难.所以在学习Qt时借用Java中的一句话:一切都是对象.
编程遵循的路线:需求→程序模型→库(框架)→代码.程序模型也是非常重要的.在框架里,模块里类与类之间的关系图,通常说明了程序模型.
其他
以往的技术都是一些"散装"的知识,编程语言,面向对象,网络通信,多线程,数据类等等.框架把他们整合到了一起,因此还需要注意各个部分是怎样结合的.
还有一点,经常会有人纠结学什么框架.站在数学的角度来看就很明白---框架是现象.也就是说所有的框架本质相同:有前端(界面),后端(数据),逻辑层(怎样显示数据)
相关文章:

Qt学习及使用_第1部分_认识Qt---学习目的及技术准备
前言 学以致用,通过QT框架的学习,一边实践,一边探索编程的方方面面. 参考书:<Qt 6 C开发指南>(以下称"本书") 标识说明:概念用粗体倾斜.重点内容用(加粗黑体)---重点内容(红字)---重点内容(加粗红字), 本书原话内容用深蓝色标识,比较重要的内容用加粗倾…...
如何把本地服务器变成公网服务器?内网ip网址转换到外网连接访问
内网IP只能在本地内部网络连接访问,当本地搭建服务器部署好相关网站或应用后,在局域网内可以通过内网IP访问,但在外网是无法直接访问异地内网IP端口应用的,只有公网IP和域名才能实现互联网上的访问。那么需要如何把本地服务器变…...
Java+Access综合测评系统源码分享:含论文、开题报告、任务书全套资料
JAVAaccess综合测评系统毕业设计 一、系统概述 本系统采用Java Swing开发前端界面,结合Access数据库实现数据存储,专为教育机构打造的综合测评解决方案。系统包含学生管理、题库管理、在线测评、成绩分析四大核心模块,实现了测评流程的全自…...

湖北理元理律师事务所:债务咨询中的心理支持技术应用
债务危机往往伴随心理崩溃。世界卫生组织研究显示,长期债务压力下抑郁症发病率提升2.3倍。湖北理元理律师事务所将心理干预技术融入法律咨询,构建“法律方案心理支持”的双轨服务模型。 一、债务压力下的心理危机图谱 通过对服务对象的追踪发现&#x…...
时间序列预测:LSTM与Prophet对比实验
时间序列预测:LSTM与Prophet对比实验 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 时间序列预测:LSTM与Prophet对比实验摘要引言实验设计1. 数据集选择2. 实验流程 模型架构对比1. LSTM架…...

阿里云域名怎么绑定
阿里云服务器绑定域名全攻略:一步步轻松实现网站“零”障碍上线! 域名,您网站在云端的“身份证”! 在数字化浪潮中,拥有一个属于自己的网站或应用,是个人展示、企业运营不可或缺的一环。而云服务器&#x…...

能上Nature封面的idea!强化学习+卡尔曼滤波
2025深度学习发论文&模型涨点之——强化学习卡尔曼滤波 强化学习(Reinforcement Learning, RL)与卡尔曼滤波(Kalman Filtering, KF)的交叉研究已成为智能控制与状态估计领域的重要前沿方向。 强化学习通过试错机制优化决策策…...
Linux网桥实战手册:从基础配置到虚拟化网络深度优化
一、网桥基础操作全解析 1. 网桥生命周期管理 创建网桥的两种方式: # 传统brctl工具(需安装bridge-utils) brctl addbr br0 echo BRIDGEbr0 > /etc/sysconfig/network-scripts/ifcfg-br0# 现代iproute2工具链 ip link add name br0 typ…...
Design Theory and Method of Complex Products: A Review
abstract 摘要 Design is a high-level and complex thinking activity of human beings, using existing knowledge and technology to solve problems and create new things. With the rise and development of intelligent manufacturing, design has increasingly reflec…...
yaffs2目录搜索上下文数据结构struct yaffsfs_dirsearchcontext yaffsfs_dsc[] 详细解析
1. 目录搜索上下文(Directory Search Context) struct yaffsfs_dirsearchcontext 是 YAFFS2 文件系统中用于 目录遍历操作 的核心数据结构,专门管理 readdir() 等目录操作的状态。 结构体定义(典型实现) struct yaf…...

Markdown基础(1.2w字)
1. Markdown基础 这次就没目录了,因为md格式太乱了写示例,展示那些都太乱了,导致目录很乱。 (我是XX,出现了很多错误,有错误和我说) 1.1 Markdown简介 Markdown是一种轻量级的标记语言&#…...

LabVIEW与PLC液压泵测控系统
针对液压泵性能测试场景,采用LabVIEW与西门子 PLC 控制系统,构建高精度、高可靠性的智能测控系统。通过选用西门子 PLC、NI 数据采集卡、施耐德变频电机等,结合LabVIEW 强大的数据处理与界面开发能力,实现液压泵压力、流量、转速等…...
SQL-labs通关(level1-22)
SQL-labs靶场详解 靶场下载 靶场下载地址 关卡 level1联合注入 用order by语句来查询字段数 顺便提一下,使用联合注入语句union select也可以查询字段数,在不能使用order by的情况下,可以使用union select来查询字段数。这里我们通过查询…...

【HarmonyOS5】UIAbility组件生命周期详解:从创建到销毁的全景解析
⭐本期内容:【HarmonyOS5】UIAbility组件生命周期详解:从创建到销毁的全景解析 🏆系列专栏:鸿蒙HarmonyOS:探索未来智能生态新纪元 文章目录 前言生命周期全景图详细状态解析与最佳实践🎬 Create状态&#…...
在命令行直接执行可以执行成功,加入crontab定时任务执行shell脚本不成功失败的问题解决方法
今天遇到在命令行直接执行可以执行成功,加入crontab定时任务执行shell脚本却不成功失败的问题,踩坑了很长时间 记录下我的解决方法 原来我的定时任务填写方式: [roottao ~]# crontab -l */10 * * * * /bin/sh /search/index.sh >>/dev/null 2&g…...

c++ 静态成员变量
Student.h头文件内容: #pragma once #include <string> using namespace std;class Student { public:string name;int score;static int totalScore; // 静态局部变量声明Student(string name, int score);~Student();void print() const; };Student.cpp源文…...
分布式爬虫代理IP使用技巧
最近我们讨论的是分布式爬虫如何使用代理IP。在我们日常的分布式爬虫系统中,多个爬虫节点同时工作,每个节点都需要使用代理IP来避免被目标网站封禁。怎么解决代理IP问题显得尤为重要。 我们知道在分布式爬虫中使用代理IP是解决IP封禁、提高并发能力和实…...

数据分析之OLTP vs OLAP
数据处理系统主要有两种基本方法:一种注重数据操作(增删查改),另一种注重商业智能数据分析。 这两种系统是: 联机事务处理(OLTP) 联机分析处理(OLAP) Power BI专为与OLAP系统兼容而构建&…...
Flask音频处理:构建高效的Web音频应用指南
引言 在当今多媒体丰富的互联网环境中,音频处理功能已成为许多Web应用的重要组成部分。无论是音乐分享平台、语音识别服务还是播客应用,都需要强大的音频处理能力。Python的Flask框架因其轻量级和灵活性,成为构建这类应用的理想选择。 本文…...
powershell 安装 .netframework3.5
在 PowerShell 中安装 .NET Framework 3.5 可以通过几种不同的方法实现,取决于你的操作系统版本。以下是几种常见的方法: 方法1:使用 DISM 命令 对于 Windows 10 和 Windows 8.1,你可以使用 DISM(Deployment Image Se…...

dvwa5——File Upload
LOW 在dvwa里建一个testd2.php文件,写入一句话木马,密码password antsword连接 直接上传testd2.php文件,上传成功 MEDIUM 查看源码,发现这一关只能提交jpg和png格式的文件 把testd2.php的后缀改成jpg,上传时用bp抓包…...
cv::FileStorage用法
cv::FileStorage 是 OpenCV 中的一个类,用于读取和写入结构化数据(如 YAML、XML、JSON)。它非常适合保存和加载诸如: 相机内参(K、D) 位姿(R、T) IMU 数据 配置参数 向量、矩阵、…...
Go 语言 := 运算符详解(短变量声明)
Go 语言 : 运算符详解(短变量声明) : 是 Go 语言中特有的短变量声明运算符(short variable declaration),它提供了简洁的声明并初始化变量的方式。这是 Go 语言中常用且强大的特性之一。 基本语法和用途 va…...

【优选算法】C++滑动窗口
1、长度最小的子数组 思路: class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {// 滑动窗口// 1.left0,right0// 2.进窗口( nums[right])// 3.判断// 出窗口// (4.更新结果)// 总和大于等于 target 的长度最小的 子数组…...

关于GitHub action云编译openwrt
特别声明:此教程仅你有成功离线编译的经验后,使用下列教程更佳 不建议没有任何成功经验的人进行云编译 1、准备工作 使用GitHub云编译模板 GitHub - jxjxcw/build_openwrt: 利用Actions在线云编译openwrt固件,适合官方源码,lede,lienol和immortalwrt源码,支持X86,电…...
数据库学习(二)——MySQL语句
MySQL 语句分为: 语句类型作用关键字示例数据查询(DQL)查询数据SELECT数据操作(DML)插入、更新、删除数据INSERT, UPDATE, DELETE数据定义(DDL)定义或修改表结构CREATE, ALTER, DROP事务控制&a…...
AI Agent 架构设计:ReAct 与 Self-Ask 模式对比与分析
一、引言 (一) AI Agent 技术发展背景 🚀 AI Agent 的演进是一场从“遵循指令”到“自主决策”的深刻变革。早期,以规则引擎为核心的系统(如关键词匹配的客服机器人)只能在预设的流程上运行。然而,大语言模型的崛起为…...

sql入门语句-案例
Sql入门 数据库、数据表、数据的关系介绍 数据库 用于存储和管理数据的仓库 一个库中可以包含多个数据表 数据表 数据库最重要的组成部分之一 它由纵向的列和横向的行组成(类似excel表格) 可以指定列名、数据类型、约束等 一个表中可以存储多条数据 数据 想要永久化存储…...

A Survey on the Memory Mechanism of Large Language Model based Agents
目录 摘要Abstract1. LLM-Based Agent的Memory1.1 基础概念1.2 用于解释Memory的例子1.3 智能体记忆的定义1.3.1 狭义定义(肯定不用这个定义)1.3.2 广义定义 1.4 记忆协助下智能体与环境的交互过程1.4.1 记忆写入1.4.2 记忆管理1.4.3 记忆读取1.4.4 总过程 2. 如何实现智能体记…...

华为OD机试 - 猴子吃桃 - 二分查找(Java 2025 B卷 200分)
public class Test14 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {String[] s = sc.nextLine().split(" ");int[] arr = new int[s.length-1];int count = Integer.parseInt(s[s...