初识Qt | 从安装到编写Hello World程序

文章目录

        • 1.前端开发简单分类
        • 2.Qt的简单介绍
        • 3.Qt的安装和环境配置
        • 4.创建简单的Qt项目

1.前端开发简单分类

前端开发,这里是一个广义的概念,不单指网页开发,它的常见分类

  • 网页开发:前端开发的主要领域,使用HTML、CSS 和 JavaScript等技术来创建运行在浏览器中的应用
  • 桌面应用开发:虽然桌面应用通常是由后端语言(如C++、Java或C#)开发的,但现在也可以使用前端技术来开发桌面应用(电脑上的应用)。例如,Electron框架允许开发者使用HTML、CSS和JavaScript来创建跨平台的桌面应用
  • 移动应用开发:开发手机应用,比如使用Java开发Android应用。
2.Qt的简单介绍

Qt 是⼀个 跨平台(Linux、Mac、Windows)的 C++ 图形⽤⼾界⾯(GUI) 应⽤程序框架。简单来说Qt用来开发PC端的应用程序,Windows下(主要是在Windows上开发):WPS Office 办公软件、VirtualBox等,Linux的KDE桌面都是使用Qt来开发的。当然Qt也支持移动应用开发,但是这是一个边缘的解决方案。

框架和库的理解

框架是各位大佬编写的解决一些问题的通用代码,我们普通的程序员在这些大佬的基础之上,填充代码完成自己的需求,这可谓是站在巨人的肩膀上!当然框架会限定我们编写的代码的自由,但能保证我们编写出来代码的下限!

在编程中,自由,就意味着更容易出错,比如:C语言中的指针很灵活,为程序员提供更加自由的操作,但是指针也更容易出错;C/C++为提供自由内存管理,但是也更容易出错!Java就不用考虑这种问题,当然自由也不都是不好的,一些东西不够灵活,注定了有些事情是做不了的!

对应库也是,大佬写的代码,但是库的使用主体是程序员,什么时候使用库,使用什么库,对库函数的调用使用在代码的什么地方,程序员能更自由的控制,而框架是相对固定的!

Windows下的桌面应用开发方案

  • 调用原始的Windows系统API
  • MFC,的用于创建Windows应用程序的应用程序框架。由Microsoft公司提供,MFC是为C++语言设计的,它提供了一组类,这些类封装了Windows API,使得开发Windows应用程序更加方便。
  • 使用Qt方案(比较主流的方案)
  • C#(“C Sharp”)由Microsoft开发的面向对象的编程语言开发
  • Electron框架允许开发者使用HTML、CSS和JavaScript来创建跨平台的桌面应用,但是这样的方案比较大的缺点是效率问题,当然也会有一些应用用这种方式开发:如VSCode

Qt 的发展史

1991 年 Qt 最早由奇趣科技开发;

1996 年 进⼊商业领域,它也是⽬前流⾏的 Linux 桌⾯环境 KDE 的基础;

2008 年 奇趣科技被诺基亚公司收购,Qt 称为诺基亚旗下的编程语⾔;

2012 年 Qt ⼜被 Digia 公司收购;

2014 年 4 ⽉ 跨平台的集成开发环境 Qt Creator3.1.0 发布,同年 5 ⽉ 20 ⽇发布了 Qt 5.3 正式版,⾄ 此 Qt 实现了对 IOS、Android、Embedded 等各平台的全⾯⽀持。

Qt 的优点

  • 跨平台,⼏乎⽀持所有的平台;

  • 可以进⾏嵌⼊式开发。

  • ⼀定程度上简化了内存回收机制;

3.Qt的安装和环境配置

Qt的官网:网址

国内清华镜像源:网址

关于开发环境配置的理解

一般来说配置开发环境需要下载:软件开发工具包(Software Development Kit,简称SDK) + 代码编辑器。 比如:配置Java开发环境需要下载JDK(Java的SDK)然后使用代码编辑器就可以编写代码。当然我们下载一些IDE(Entegrated Development Environment 集成开发环境)就可以有SDK和代码编写的功能!

编写C++代码的时候使用,VS下载即用,也不用下载SDK,它内置了这些工具!再如开箱即用的JetBrains全家桶;如果使用VSCode编辑器,然后下载插件也能开发;在搭建Qt开发环境本质上,要有C++编译器,SDK和代码编辑器,但是下载Qt SDK就有编辑器和官方提供的Qt Creator编写代码

Qt的安装

我选择下载的是5.__的版本,软件并不要求最新的!最新的软件可能会引入一些新的特性,但是也有可能会引入一些难以解决的Bug,相对于使用新特性而言,我们更希望我们使用的版本是稳定的没有隐藏的Bug! 单击下载好的安装包进行安装
在这里插入图片描述

安装Qt时遇到,下面的这些页面需要注意下,否则一路下一步即可

在这里插入图片描述

上面如果不想注册直接断开网络即可!

在这里插入图片描述

上面选择安装C++编译器MinGW,当然其他的插件,可以在使用的时候安装!出现下面的界面说明Qt安装成功!

在这里插入图片描述

Qt的相关工具

在这里插入图片描述

配置环境变量

环境变量相当于进程间通信的一种简单方式!配置环境变量是将一些命令、程序等的路径配置成全局的,方便直接查找!当然有些时候不是必须的!

将下面的这个路径配置到环境变量中:D:\software\qt\5.14.0\mingw73_64\bin

在这里插入图片描述

4.创建简单的Qt项目

在这里插入图片描述

点击文件,创建文件或项目

在这里插入图片描述

选择传统的GUI开发方式Qt Widegets

在这里插入图片描述

选择一个不带中文的路径! 注意:使用中文可能会构建失败!!

在这里插入图片描述

使用老牌的Qt构建工具qmake,CMake也是构建工具并非Qt专属,Qbs新生的构建工具(几乎没人用);这些工具构建会用到一些元编程的技术(用代码生成代码)

在这里插入图片描述

QMainWindow完成的程序窗口;QWidgt表示一个控件;这里先选择QWidgt即可!

在这里插入图片描述

关于国际化,直接 即可!

在这里插入图片描述

在这里插入图片描述

将项目添加到版本控制系统,选择 即可

输出Hello World

在这里插入图片描述

点击widget.ui

在这里插入图片描述

通过拖拽的方式,使用Label编写!然后点击运行,跳出界面
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

qt-C++笔记之捕获鼠标滚轮事件并输出滚轮角度增量

qt-C笔记之捕获鼠标滚轮事件并输出滚轮角度增量 code review! 文章目录 qt-C笔记之捕获鼠标滚轮事件并输出滚轮角度增量1.运行2.main.cpp3.main.pro 1.运行 2.main.cpp #include <QApplication> #include <QWidget> #include <QWheelEvent> #include <…

HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核基础-消息队列queue

目录 一、消息队列基本概念二、消息队列运行机制三、消息队列开发流程四、消息队列使用说明五、消息队列接口六、代码分析&#xff08;待续...&#xff09;坚持就有收获 一、消息队列基本概念 队列又称消息队列&#xff0c;是一种常用于任务间通信的数据结构。队列接收来自任务…

Json-序列化字符串时间格式问题

序列化字符串时间格式问题 一、项目场景二、问题描述三、解决方案 一、项目场景 最近C#中需要将实体进行json序列化&#xff0c;使用了Newtonsoft.Json public static void TestJson(){DataTable dt new DataTable();dt.Columns.Add("Age", Type.GetType("Sys…

【数据库】哪些操作会导致索引失效

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;数据库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 在数据库管理中&#xff0c;索引的有效性对于查询性能至关重要。然而&#xff0c;索引可能会因为各种操…

插值(一)——多项式插值(C++)

插值 插值的作用是可以将原本比较难计算的函数转换为误差在一定范围内的多项式&#xff0c;比如在单片机中直接计算 x 、 log ⁡ 2 x \sqrt{x}、\log_2x x ​、log2​x之类的函数是比较麻烦的&#xff0c;但是使用插值的方法就可以将其转换为误差可控的只有乘法和加减法的多项…

Codeforces Round 926 (Div. 2)

Codeforces Round 926 (Div. 2) Codeforces Round 926 (Div. 2) A. Sasha and the Beautiful Array 题意&#xff1a;略。 思路&#xff1a;从小到大排序&#xff0c;取前后差和。 AC code&#xff1a; void solve() {int ans 0;cin >> n;for (int i 1; i < n…

iOS AlDente 1.0自动防过充, 拯救电池健康度

经常玩iOS的朋友可能遇到过长时间过充导致的电池鼓包及健康度下降问题。MacOS上同样会出现该问题&#xff0c;笔者用了4年的MBP上周刚拿去修了&#xff0c;就是因为长期不拔电源的充电&#xff0c;开始还是电量一半的时候不接电源会黑屏无法开机&#xff0c;最后连着电源都无法…

模拟算法总结(Java)

目录 模拟算法概述 练习 练习1&#xff1a;替换所有的问号 练习2&#xff1a;提莫攻击 练习3&#xff1a;Z字形变换 模拟算法概述 模拟&#xff1a;根据题目要求的实现过程进行编程模拟&#xff0c;即题目要求什么就实现什么 解决这类题目&#xff0c;需要&#xff1a; 1…

C#,二分法(Bisection Method)求解方程的算法与源代码

1 二分法 二分法是一种分治算法&#xff0c;是一种数学思维。 对于区间[a&#xff0c;b]上连续不断且f&#xff08;a&#xff09;f&#xff08;b&#xff09;<0的函数yf&#xff08;x&#xff09;&#xff0c;通过不断地把函数f&#xff08;x&#xff09;的零点所在的区间…

【STM32 CubeMX】GPIO的工作模式

文章目录 前言一、有哪些工作模式&#xff1f;1.1 GPIO的详细介绍1.2 GPIO的内部框图输入模式输出部分 总结 前言 在嵌入式系统开发中&#xff0c;对于STM32微控制器的GPIO&#xff08;General Purpose Input/Output&#xff09;引脚的配置和使用是至关重要的。GPIO引脚可以通…

从C向C++8——多态

一.多态基础 面向对象程序设计语言有封装、继承和多态三种机制&#xff0c;这三种机制能够有效提高程序的可读性、可扩充性和可重用性。 “多态&#xff08;polymorphism&#xff09;”指的是同一名字的事物可以完成不同的功能。多态可以分为编译时的多态和运行时的多态。前者主…

Linux之动静态库

今天我们来讲动静态库&#xff01; 首先我们来粗粒度的划分一下动态库和静态库。 动态库就是只有一份库文件&#xff0c;所有想用该库的文件与改库文件建立链接&#xff0c;然后使用。这样可以提高代码复用率&#xff0c;避免重复拷贝产生没必要的内存消耗。 静态库&#xf…

京东购物拉新保姆级教程

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

【Java多线程】Thread类的基本用法

目录 Thread类 1、创建线程 1.1、继承 Thread&#xff0c;重写run 1.2、实现 Runnable&#xff0c;重写run 1.3、使用匿名内部类&#xff0c;继承 Thread&#xff0c;重写run 1.4、使用匿名内部类&#xff0c;实现 Runnable&#xff0c;重写run 1.5、使用 lambda 表达式…

如何在30天内使用python制作一个卡牌游戏

如何在30天内使用python制作一个卡牌游戏 第1-5天&#xff1a;规划和设计第6-10天&#xff1a;搭建游戏框架第11-20天&#xff1a;核心游戏机制开发第21-25天&#xff1a;游戏界面和用户体验第26-30天&#xff1a;测试和发布附加建议游戏类型游戏规则设计界面设计技术选型第6-…

Qt:自定义信号,信号emit,传参问题,信号槽与moc

一、自定义信号&#xff0c;信号emit 1、自定义信号 在头文件中 加入signals&#xff1a; 就可以编写信号 2、emit emit的作用是通知信号发生 二、跨UI控件传参 每次按Dialog添加按钮主控件数字会增长 // .h private slots:void on_btnAdd_clicked(); signals:void sign…

Rust 数据结构与算法:5栈:用栈实现前缀、中缀、后缀表达式

3、前缀、中缀和后缀表达式 计算机是从左到右处理数据的&#xff0c;类似(A (B * C))这样的完全括号表达式&#xff0c;计算机如何跳到内部括号计算乘法&#xff0c;然后跳到外部括号计算加法呢&#xff1f; 一种直观的方法是将运算符移到操作数外&#xff0c;分离运算符和操…

【Java从入门到精通】Java变量命名规则

Java 变量命名规则 在 Java 中&#xff0c;不同类型的变量&#xff08;例如实例变量、局部变量、静态变量等&#xff09;有一些命名规则和约定。 遵循一些基本规则&#xff0c;这有助于提高代码的可读性和维护性。 以下是各种变量命名规则的概述&#xff1a; 使用有意义的名…

第13章 网络 Page733 “I/O对象”的链式传递 单独的火箭发射函数

把main函数中火箭发射代码挪走一些&#xff0c;构成一个单独的火箭发射函数launch_rocket()&#xff0c;如下图所示&#xff1a; 代码&#xff1a; 之所以没有将io_service对象也挪到launch_rocket()函数中&#xff0c;是因为正常的asio程序肯定还会有大量的其他异步操作需要这…

C++ 图上 bfs(五十八)【第五篇】

今天我们来学习一下图上bfs。 1.图上bfs 在图上&#xff0c;我们也可以进行 BFS&#xff0c;也可以解决图上 DFS 能解决的问题&#xff0c;比如连通块。 除此以外&#xff0c;根据 BFS 的性质&#xff0c;第一次到一个点的时候记下来的步数一定是到从起点到这个点的最小步数&…