【第一章】初识Qt

server/2024/9/23 16:27:48/

文章目录

  • 1Qt概述
    • 1.1认识Qt
    • 1.2Qt的核心特性
    • 1.3Qt的发展历史
    • 1.4QtSDK的下载和安装
  • 2.创建Qt项目
    • 2.1分析初始化文件
    • 2.2Widget类
    • 2.3main.cpp
    • 2.4Qt Designer

1Qt概述

1.1认识Qt

Qt是一种跨平台的应用程序和用户界面框架,使用c++ 语言开发,由Qt Company(开发维护Qt的一个公司)支持和维护。Qt框架广泛应用于开发GUI应用程序,同时也可以开发非GUI程序,如命令行工具和服务器。Qt常用于电脑桌面应用开发,而电脑桌面应用开发又是前端开发中的一个分支。再说白一点,Qt就是用来搞前端的。

那么作为众多前端开发技术中的一员,Qt又有哪些特点呢?

1.2Qt的核心特性

  • 跨平台性:可跨平台是Qt最突出的特点之一.支持多个桌面操作系统(Windows、macOS、Linux)和移动操作系统(iOS、Android)。
  • 信号与槽机制:信号即事件,槽即响应这些事件的方法。这是Qt的一个核心概念,也Qt进行事件驱动编程的方式。
  • 模块化与工具:根据设计需求选择相应的模块。Qt配备了强大的工具,如Qt Designer(界面设计)、Qt Creater(集成开发环境)和其它辅助工具。

1.3Qt的发展历史

  • 1991年:挪威Trolltech(奇趣)公司的创始人Haavard Nord和Eirik Chambe-Eng首次提出Qt的概念,试图开发一个跨平台的C++图形化用户界面。
  • 1995年:Qt的第一个版本被Trolltech发布,主要用于UNIX和Linux平台。
  • 1996年:推出了支持windows平台的Qt版本,大大扩展了Qt的应用市场和应用范围。
  • 2001年:Qt3.0发布,引入了网络支持和XML处理。
  • 2008年:诺基亚收购了Trolltech公司,并将Qt作为软件开发的核心软件。
  • 2010年:发布Qt4.7,引入Qt Quick,一个用于创建动态用户界面的新框架。
  • 2012年:Qt的开发和维护权转让给了现在的Company公司。同年发布Qt5.0。
  • 2020年:推出Qt6.0.这一版本在保持向后兼容的同时,优化了数据处理和3D图形的能力,提供了更多现代化的开发特性。

Qt的发展依赖于活跃的开发者社区。每年Qt都会有多次的迭代和更新,每个主要版本的发布都会带来显著的改进和新功能。

Qt的版本分为商业版和开源版,商业版一般是企业在用,作为初学者使用开源版就足够了。

1.4QtSDK的下载和安装

Qt SDK(Software Development Kit)是一个全面的开发工具集,专为Qt开发者设计,包含了创建Qt应用程序所需的所有工具和库。这个工具集旨在提供一站式的解决方案,以简化安装和配置过程,让开发者能够快速启动并进行Qt项目开发。

下载链接:QtSDK官网下载链接
点击进去之后选择一个版本进行下载,由于是国外的网站,下载的速度是很慢的,有需要的朋友可以私我,微信发给你。

下载完之后,直接默认安装就行了。

2.创建Qt项目

在这里插入图片描述
弹出一个对话框,选择Qt Widgets Application
在这里插入图片描述

接下来为项目命名,并确定路径。建议命名和路径都不要带中文,因为可能在以后导致找不到文件等错误(教训)
在这里插入图片描述
接下来在Build system选择构建系统工具,qmake用于自动生成makefile文件。
在这里插入图片描述

选择编译套件,其中Qwidget表示一个用户界面的主窗口。是所有用户界面的基类,提供了基本的应用程序窗体功能。

在这里插入图片描述

选择翻译文件,这些文件允许开发者为不同的语言环境提供不同的文本翻译,使得应用程序可以支持多语言用户界面。
在这里插入图片描述
编译套件提供了工具和库,使得开发者可以构建和编译Qt应用程序。
在这里插入图片描述
在这里插入图片描述
创建成功之后就是以下界面:
在这里插入图片描述
我们可以看到,创建的项目里面会自动的生成了一些文件,这些文件跟我们刚才选的选项有关。下面我们来分析这些文件的作用

2.1分析初始化文件

在这里插入图片描述

  1. 24-5-9.pro文件:是一个项目文件,用于定义整个项目的配置和构建规则。它被qmake工具用来生成Makefile,从而指导编译过程。
  2. widget.h:这是一个头文件,包含Widget类成员以及函数的声明。Widget类即窗口类。
  3. main.cpp:应用程序的入口点,负责启动程序,创建和显示窗口。比如创建Widget类的实例对象。
  4. widget.cpp:包含Widget类的具体实现,实现了在widget.h中声明的方法。包括窗口的构造函数,事件处理等。
  5. widget.ui:这是一个XML格式的用户界面文件,用于Qt Designer。它定义了图形用户界面的布局和属性,如按钮、文本框和其他控件的位置和样式。widget.cpp中的代码通常通过调用Ui::Widget类加载和使用这个文件来构造GUIUi::Widget类是由uic工具从widget.ui自动生成的。

总结

qmake工具生成的.pro文件定义了整个项目的构建配置,main.cpp文件设置程序的入口和主窗口,widget.cpp/widget.h文件定义和实现了主窗口的功能,比如点击某个按钮产生什么效果等。widget.ui则负责描述窗口的视觉布局。

2.2Widget类

其中查看widget.h文件代码我们可以发现,Widget类继承自QWidget类,QWidget类是所有用户界面的基类。
在这里插入图片描述
正是因为继承,Widget类才能使用了QWidge类提供的所有属性和方法,例如处理用户输入、显示输出、管理窗口等。

2.3main.cpp

在这里插入图片描述

2.4Qt Designer

Qt Designer是Qt开发环境中的一个强大的工具,允许开发者通过图形化界面来设计和构建CUI。它是一个所见即所得的编辑器,使得创建用户界面变得简单而直观。
在这里插入图片描述
设计模式就是Designer模式
在这里插入图片描述
设计好的界面被保存为XML格式的 .ui 文件,这些文件可以被 Qt 的 uic(用户界面编译器)工具自动转换为相应的 C++ 代码,也可以在运行时直接加载。所以我们构建用户界面布局有两种方式,一种是借用Designer模式生成,一种是纯代码生成,可混合使用。


http://www.ppmy.cn/server/40704.html

相关文章

4.1 编写程序,从键盘接收一个小写字母,然后找出他的前导字符和后续字符,再按顺序显示这三个字符

方法一: 运行效果: 输入B,输出显示ABC;输入A,输出显示AB 思路: 1、通过键盘输入接收一个字母。 2、将输入的字母减去1,得到前导字符,然后输出。 3、将输入的字母加上1,得…

Android的视图显示和管理机制:layout view window WindowManager Canvas Surface

在Android系统中,Layout view window WindowManager Canvas Surface SurfaceFlinger这些组件协同工作,以实现图形的绘制和显示。需要搞明白这些组件是什么时候创建的以及他们之间的结构关系。 从上到下的层级关系:用户在View上进行操作&…

机器学习周报第三十八周 iTransformer

文章目录 week38 iTransformer摘要Abstract一、文献阅读1. 题目2. abstract3. 网络架构**转置Embedding:****LayerNorm(层归一化)****Feed-forward network(前馈网络)****Multivariate-Attention(多变量注意…

用lobehub打造一个永久免费的AI个人助理

Lobe Chat是一个开源的高性能聊天机器人框架,它被设计来帮助用户轻松创建和部署自己的聊天机器人。这个框架支持多种智能功能,比如语音合成(就是让机器人能说话),还能理解和处理多种类型的信息,不仅限于文字…

软件测试之 单元测试

你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github gitee 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^) 想看更多 那就点个关注吧 我会尽力带来有趣的内容 单元测试 在eclipse中 导包 放入提前准备的包 遇到这…

数据与结构--堆

堆 堆的概念 堆&#xff1a;如果有一个关键码的集合K{k0,k1,k2,…,kn-1}&#xff0c;把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中&#xff0c;并满足ki<k2i1且ki<k2i2&#xff08;或满足ki>k2i1且ki>k2i2&#xff09;&#xff0c;其中i0,1,2,…

阿里云 物联网平台 MQTT连接、数据传输

阿里云 物联网平台 MQTT连接、数据传输 1、设备连接阿里云 2、多设备之前的通信、数据流转 3、设备数据来源的读取。 基于C# winform 开发上位机&#xff0c;读取设备、仪器、MES或者电子元器件的数据&#xff0c;MQTT传输至阿里云平台&#xff0c;可视化界面构建界面&#…

(Java)心得:LeetCode——11.盛最多水的容器

一、原题 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容…