1.Qt概述(一)
Qt是一个跨平台的C++图形用户界面框架,主要用于桌面应用开发。它支持Windows、Linux、Mac和嵌入式系统,相比MFC等传统方案更具生命力。Qt提供QtCreator等开发工具,支持通过代码或图形化界面两种方式创建GUI程序。其核心特点包括:1)跨平台能力;2)对象树和信号槽机制;3)元编程技术自动生成代码;4)支持国际化。Qt特别适合开发需要图形界面的工业设备和桌面应用程序,但不适用于
一、Qt背景与应用场景
Qt定位
互联网核心岗位职责:
1)开发
a.后端开发
b.前端开发 -> 网页前端;桌面应用;移动应用
c.算法工程师
d.游戏开发
2)测试
3)运维(管理机制)
4)产品经理(非技术岗,提出需求)
Qt属于客户端(与用户打交道的成为客户端)开发,桌面应用开发;Qt无法用于开发网页前端,也不能开发移动应用 -> 目前虽然支持移动应用开发,但不温不火。
客户端开发重要任务:编写和用户交互的界面。
和用户交互的界面,两种典型风格:
1.命令行界面/终端界面 -> TUI
2.图形化界面 -> GUI 适用于普通用户
Qt是用来编写桌面GUI程序的一套框架!
Windows下其他方案开发GUI
1.Windows API ,windows系统提供的原生API,开发起来非常原始,也很繁琐
2.MFC 上世界90年代影响力非常深渊的;除此还有VC 6.0
3.Qt(1991年左右)诞生,(MFC已然断更)Qt仍在推陈出新,至今仍然具有生命力
GTK,WxWidegt ...
4. Windows Forms给C#(.net)量身定做了一套开发GUI技术体系
5.WPF
6.UWP
7.Electron :本质是把基于HTML这样的网页,打包成一个windows上运行的客户端程序
最初是用来开发"atom"文本编辑器的--Github,后Github被微软收购
比较大的缺点:开发出来的程序,运行效率,低于原生开发的技术体系
Qt介绍
Qt是一个跨平台的C++图形用户界面应用程序框架。
框架 vs 库
相同点:都是大佬写好的代码,程序员去使用。
不同点:库是被程序员调用的(程序员是主体);框架和程序员关系则是框架占主体,程序员负责填充晚上框架中留出的细节。
C++相比于Java,生态没有那么统一,编码风格各异。
Qt应用场景和优点
Qt支持的系统:
1)windows(各个版本)
2)Linux(各种发行版),尤其是Linux中的KDE桌面基于Qt构建的
- Linux主要是给服务器使用,服务器不需要图形化界面
- 但也有少数用户,使用Linux作为桌面;(GNOME,基于GTK构建;KDE,基于Qt构建)
3)Mac系统
4)嵌入式系统
日常家用电器,这些设备内部也有计算机,但配置不高 -> 有些嵌入式系统,也是需要运行图形化界面的程序的,Qt起作用了,尤其是一些工业设备上(设备如果配置高,跑安卓也可以)
二、Qt安装
1.C++编译器
2.Qt SDK(SDK->软件开发工具包)
3.Qt集成开发环境(IDE)
1)Qt官方提供的Qt Creator -> 最容易上手,不需要额外的配置
2)visual studio -> 功能更强,但需要额外的配置更多。
3)Eclipse -> IDE平台,可搭配不同的插件使用
配置环境变量:将 前导路径\Qt\Qt版本\mingw_64\bin路径添加到系统Path环境变量
环境变量“进程间通信”理解:双方事先有约定
三、Qt SDK
1)Assitant:Qt自带的离线版本的官方文档
2)Designer:Qt设计师,图形化的设计界面工具。通过拖拽空间的方式来快速生成界面。搭配Qt Creator来使用
3)Linguist:Qt语言家,对国际化支持,一键式切换语言
4)Creator:Qt集成开发工具,主要使用
创建Qt项目
传统开发GUI:QT Widget
构建系统:通过Qt写的程序,涉及到一系列的“元编程”技术,通过代码来生成代码。
Qt框架在编译的时候,自动先调用一系列的生成工具,基于自己写的代码,生成一系列的其他C++代码,最终编译的代码,也是最后生成的代码。
使用Qt Creator创建项目,会自动地生成一些代码出来。生成的代码包括一个类,此处选择的就是这个自动生成类的父类是谁。
1)QMainWindows,完整的应用程序窗口(可以包含菜单栏,工具栏,状态栏)
2)QWidget表示一个控件(窗口上的一个具体元素,输入框,按钮,下拉框,单选按钮,复选按钮)
3)QDialog表示一个对话框
注:Qt中内置的类都是以Q前缀开头的
form file非常关键!
Qt中创建图形化界面的程序,两种方式:
1)直接通过C++代码方式创建界面2)通过form file,以图形化的方式来生成界面(此时可以使用Qt Designer或者直接使用Qt Creator来编辑这个ui文件,以图形化界面方式)
四、Qt代码结构
main.cpp
QApplication:编写一个Qt的图形化界面程序,一定需要有QApplication对象!
Widget:创建项目的时候,填写了生成的类名
创建一个控件对象,并显示出来,.show()方法让控件显示出来,.hide()方法让控件隐藏。
(Widget的父类是QWidget,这些方法都是QWidget提供的)
widget.h
Q_OBJECT是一个Qt内置的宏,宏本质是文本替换 -> Q_OBJECT展开之后,就会生成一大堆的代码(Qt中有一个非常核心的机制,“信号”和“槽”,如果某个类想使用“信号和槽”就需要引入Q_OBJECT这个宏)
Qwidget *parent = nullptr -> Qt中引入了“对象树”机制 -> 创建的Qt的对象,就可以把这个对象给挂到对象树上,往树上挂的时候就需要指定“父节点” -> 对象树是一颗普通N叉树。
widget.ui
html vs xml
不同点:xml有哪些标签,表示什么含义,由程序员自定义!(ui文件本质上就是一个xml)类似自定义应用层协议,是一种约定。
Qt中使用xml文件就是去描述程序的界面是什么样的。
进一步的qmake会调用相关的工具,依据xml文件生成一些C++代码,从而把完整的界面构造出来。
.pro
Qt项目的工程文件,也是qmake工具构建时的重要依据。
.pro类似于Makefile文件 -> qmake搭配.pro起到的作用和Makefile是类似的。
临时文件
编译Qt程序,还是会用到Makefile,只不过这个makefile不需要手动写,而是qmake自动生成。
ui_widget.h -> widget.ui xml生成的.h文件。
ui_widget.h内部包含Qt自动生成的代码,这个setupUi方法中包含具体细节。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


























所有评论(0)