C++常用的支持中文的GUI库Qt 6之一:下载、安装与使用

news2025/2/24 9:06:53

C++常用的支持中文的GUI库Qt 6之一:下载、安装与使用

因为Qt发展变化较快,网上许多介绍Qt的下载、安装与使用已过时,初学者常因行不通而受挫,故此发布本文,以Qt 6.2.4开源版在Windows 10安装与使用为例介绍。

C++好用的GUI简介

Qt:Qt是一个流行的跨平台GUI框架,支持Windows、MacOS、Linux等多个平台,提供了很多UI界面元素和控件,并且拥有很好的文档和社区支持。

拥有良好的国际化和本地化支持,并且提供了多语言翻译工具,可以很方便地实现中文界面。

QT官网提供了开发者所需的最全面的文档,包括教程、示例代码、API参考等。

Qt实质上是用C++编写的大型类库,它为跨平台应用开发提供了一个完整的框架。Qt框架包含大量的类,支持GUI、数据库、网络、多媒体等各种应用的编程。

Qt类库本身是用C++语言编写的,所以Qt支持的基本开发语言是C++。Qt还对标准C++语言进行了扩展,引入了信号与槽、属性等机制,为跨平台和GUI程序的对象间通信提供了极大的方便。

Qt还提供了一种自创的编程语言QML,它是类似于JavaScript的声明性语言。Qt提供了一个用QML编写的库Qt Quick,它类似于Qt C++类库,区别是Qt Quick中的各种控件被称为QML类型(type)。QML用于描述程序的用户界面,将用户界面描述为对象树,每个对象具有自己的各种属性。

Qt也支持Python,Qt类库的Python绑定版本比较多,比较常用的是PyQt和PySide。PyQt是RiverbankComputing公司开发的Qt类库的Python绑定,它出现得比较早,更新比较及时,是目前应用比较广泛的Qt类库的Python绑定。PyQt5是与Qt 5对应的版本,PyQt6是与Qt 6对应的版本。PyQt5和PyQt6都采用商业许可和GPLv3开源许可。

PySide是Qt官方的一个项目,Qt6的Python绑定被直接命名为PySide6,PySide采用商业许可和LGPLv3开源许可,相对于PyQt采用的GPLv3开源许可,LGPLv3开源许可对商业开发者更友好一些。

wxWidgets:wxWidgets也是一个跨平台GUI框架,支持Windows、MacOS、Linux等多个平台,提供了类似于MFC的API接口,让程序员可以快速开发GUI应用程序。

wxWidgets 也支持中文界面,并提供了多语言翻译工具。

wxWidgets官网: https://www.wxwidgets.org/

Qt 下载、安装

Qt提供了两种版本,一种是开源免费版,另一种是商业版。开源免费版可以用于个人和商业目的,而商业版则需要购买授权才能使用。因此,如果您只是想尝试使用Qt或者进行个人项目开发,那么Qt是免费的。但如果您打算将Qt用于商业用途或者需要商业版的额外功能,就需要付费购买相应的许可证(登录Qt官网并进入个人中心页面,选择需要购买的产品或服务,并根据提示完成付款)。

对于学习QT的初学者来说,使用开源免费版就已经足够了。

在C++中使用Qt开源版本

如果没有Qt账号,首先用邮箱注册一个Qt账号,在安装的过程中还需要用到。注册一个

Qt账号在Qt官网首页Qt | Tools for Each Stage of Software Development Lifecycle ,点击右上角的小人 进入登录界面,没有账号,点击CreateQtAccount创建账号,需要用Email。

注册Qt账号并不需要购买授权许可证。QT开源版本可以免费使用,商业授权版本需要购买相应的授权许可证。

需要以下步骤:

安装 Qt:首先需要下载并安装 Qt 开发环境。

Qt安装程序分为商用和开源的版本,针对个人和小团队的开发,开源版本更加方便适用。

商用下载:Try Qt | Develop Applications and Embedded Systems | Qt

开源下载:Index of /official_releases/online_installers

提示:自Qt 5.15系列起(含Qt 5.15、Qt 6.0全系列),Qt官方宣布不再发布已经构建好的各平台二进制离线安装文件供开源用户下载,也不提供offline版本的安装程序,只提供online程序统一安装。还需要注意的是Qt6只支持Windows10以上的系统。我这里用开源版

找到核实版本下载,我用windows版,因此单击qt-unified-windows-x64-online.exe下载,需要注意的是Qt6只支持Windows10以上的系统。下面的安装约占4G磁盘空间。

找到下载的文件文件 qt-unified-windows-x64-4.5.2-online.exe,双击安装

输入注册邮箱名和密码,单击“下一步”

按上图勾选,单击“下一步”,出现如下界面:

单击“下一步”,等待出现如下界面:

【通过允许在Qt Creator中跟踪假名/笔名使用数据,帮助我们改进Qt和Qt Creator。跟踪可以在任何时候被禁用。

请阅读Qt公司隐私政策。

O通过在Qt中启用发送假名使用统计数据来帮助我们改进

O在Qt Creator中禁用发送假名使用统计信息】

我选第二项,单击“下一步”出现如下界面:

安装目录默认C:\Qt

我改成D:\Qt,当前目录名字以及路径中所有目录不能存在中文字符,不能有空格。

安装类型,按默认Custom installation

单击“下一步”出现如下界面:

Qt 6.2.4是Qt 6系列第一个长期技术支持版本(Long Term Support,LTS),故选它

在其下的子项选择是:使用Qt Creator自带的MinGW编译器,勾选之。额外的库"Addictional libraries"全选,单击“下一步”出现如下界面:

勾选I have read and agree to the terms contained in the license agreements(我已阅读并同意许可协议中包含的条款),单击“下一步”出现如下界面:

按默认,单击“下一步”出现如下界面:

单击“安装”出现如下界面:

请耐心等待在线安装,时间长达数分钟(与你的网速和计算机配置有关),直至出现如下界面:

至此,完成安装。

QT的简单使用

在开始菜单找到QT Creator单击

【Windows10中,若启动Qt Creator报错,应用程序无法正常启动(0xc000022),请“以管理员的身份运行”。

设置始终以管理员身份运行应用程序的办法:

右键出现错误的程序.exe文件,打开属性页面;

在程序属性对话框,点击切换到“兼容性”选项卡,找到并勾选“设置”项目下的“以管理员身份运行此程序”后,点击确定。】

打开Qt Creator,界面如图所示:

它主要由窗口区、菜单栏、模式选择器、构建套件选择器、定位器和输出窗格等部分组成。

提示:显示的界面是中文,可以切换界面语言,在“编辑/Edit →Preferences”中在“环境/Environment”选项卡中,找到“语言/Language”下拉菜单

选定语言,再单击“确定/OK”按钮即可。我这里选用“English”。

创建 Qt 项目:在 Qt Creator(Qt 集成开发环境)中创建一个新的 Qt 项目。选择 "File" -> -> "Application" -> "Qt Widgets Application" 即可创建一个基于 Qt 的桌面应用程序。

左侧窗口中的“New Project”,选择项目类型(如Qt Widgets Application),

单击“Choose”按钮后

输入名称(我这里是QtTest01)和路径等信息,单击“Next”按钮

【Qmake、CMake和Qbs:

它们自动生成的构建系统的配置文件,都是文本文件

Qmake的是.pro文件(应用程序名称.pro)

CMake的是CMakeLists.txt文件

Qbs的是. qbs文件(应用程序名称. qbs)

Qmake、CMake和Qbs都是跨平台的构建系统,它们都可以用于构建C++项目,但是它们在语法和使用方式上存在一些不同。

Qmake:

Qmake是Qt开发框架自带的构建工具,被广泛应用于Qt项目的构建。Qmake采用类似于make的语法,可以通过.pro文件来描述项目的结构和编译规则,简单易学,适合小型项目。Qmake支持跨平台构建,可以生成Visual Studio、Xcode和makefile等多种构建系统所需的文件。

CMake:

CMake是一款独立的构建工具,不依赖于任何特定的开发框架。CMake使用CMakeLists.txt文件来描述项目的结构和编译规则,支持跨平台构建,并且可以生成Visual Studio、Xcode、makefile以及Ninja等多种构建系统的文件。CMake相比Qmake更加灵活,可以支持更复杂的项目结构。

Qbs:

Qbs是Qt公司推出的全新构建系统,使用QML的声明式语言来描述项目和构建规则,支持跨平台构建,相比于Qmake和CMake,Qbs比较适合于大型、复杂的项目支持自动化依赖解决,减少了构建系统配置的工作量。】

我这里不改变默认CMake,单击“Next”按钮

基类(Bsse class):QMainWindow、QWidget和QDialog

QMainWindow:用于创建主窗口应用程序。它提供了菜单栏、工具栏、状态栏等顶层组件,并且可以包含其他QWidget子类。在QMainWindow的初始用户界面中,菜单并不是默认显示的,如果你想要添加菜单到QMainWindow中,需要手动创建和设置。

QWidget:是所有Qt用户界面对象的基类,它本身不具有绘制任何内容的功能,但可以作为容器来包含其他控件。

QDialog:是一个对话框窗口,主要用于与用户进行交互(例如获取输入或显示消息),并且通常会返回一些数据给调用者。

这三个类都是Qt中常用的基类,每个类都有其特定的用途和优点,具体使用哪个类取决于应用程序的需求和设计。

基类(Bsse class)我这里选QWidget,单击“Next”按钮:

Translation File(翻译文件)界面,如果您计划通过Qt Linguist工具为您的项目用户界面提供翻译,请在这里选择一种语言。将为您生成相应的翻译(.ts)文件。

我这里不用——不改变默认,单击“Next”按钮

这一步是为项目/应用程序设置 Qt 套件(Qt Kits),默认情况下,选中全部套件。

我这里不改变默认,单击“Next”按钮

在此界面可以设置,作为子项目添加到项目,以及加入版本控制系统管理。这两个功能暂时用不到,都用默认的 <None>。

单击“Finish”按钮

QT Creator向导创建项目后,会自动生成一些源文件和资源文件。您可以在代码编辑器中编写代码,并使用QT提供的工具箱、属性编辑器和设计器等功能来设计GUI界面。

现在可以进行界面设计

双击目录树中的.ui文件,这里是widget.ui

拖曳控件【注:Widgets小部件】容器栏的滑动条,拖曳控件容器栏的滑动条,在Display Widgets容器栏中找到Label标签控件,拖曳此控件到中间的窗体中,修改拖曳到窗体中的控件的属性

编译和运行:

“Build→Build Project ”菜单命令进行编译:

如果没有错误,就可以单击“Build→Run” 菜单命令来运行您的应用程序了:

打开QT Creator已创建的项目

选择打开 .pro 后缀的文件或CMakeLists.txt文件或. qbs文件

Qmake的是.pro文件(应用程序名称.pro)

CMake的是CMakeLists.txt文件

Qbs的是. qbs文件(应用程序名称. qbs)

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

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

相关文章

DM8:达梦数据库宕机版本记录汇总(持续更新中)

DM8:达梦数据库宕机版本记录汇总&#xff08;持续更新中&#xff09; 环境介绍1 SQL引起的数据库故障1.1 SQL引起的数据库故障汇总表1.2 gdb dmserver core 调试得到数据库崩溃时的内存信息1.3 优化参数解决故障 环境介绍 在测试环境或生产环境&#xff0c;特别情况下会遇到数…

go tool pprof 参数 ‘-base‘ 和 ‘-diff_base‘ 之间的区别

go tool pprof 工具是用于分析由 runtime/pprof包 或 net/http/pprof包产生的profile数据&#xff0c;完整的帮助文档在 https://github.com/google/pprof/blob/main/doc/README.md &#xff0c;pprof 工具支持的参数很多&#xff0c;可以用命令 go tool pprof --help来查看全部…

DJ5-4 交换局域网(第一节课)

目录 一、局域网概述 1、LAN 的特点和分类 2、常见的网络拓扑结构 二、计算机与局域网的连接 三、局域网体系结构 四、链路层寻址地址 1、MAC 地址分配 2、MAC 地址识别 五、ARP 地址解析协议 1、ARP 地址解析协议 2、ARP&#xff1a;两个主机位于同一个局域网 3、…

网络计算模式复习(六)

什么是CDN CDN的全称是Content Delivery Network&#xff0c;即内容分发网络。 其目的通过在现有的Internet中增加一层新的网络架构&#xff0c;将网站的内容发布到最接近用户的网络“边缘”&#xff0c;使用户可以就近取得所需的内容&#xff0c;解决Internet网络拥挤的状况&…

socket套接字通信 TCP传输控制协议/IP网络协议 5.18

B/S :浏览器和服务器 C/S :客户机和服务器 网络的体系结构&#xff1a; 网络的层次结构和每层所使用协议的集合 网络采用分层管理的方法&#xff0c;将网络的功能划分为不同的模块 OSI模型&#xff1a; 共7种&#xff1a; 应用层&#xff1a;接收用户的数据&#xff0c;面…

Blender基础技巧小结(三)

本文续签一篇&#xff1a;Blender基础技巧小结&#xff08;二&#xff09;_皮尔斯巴巴罗的博客-CSDN博客 将物体显示为模板&#xff0c;类似Maya Template 四窗口视图 调整3d视图远截面 Blender并不直接支持放样&#xff0c;可以用第三方插件&#xff0c;但效果并不好 基于me…

usb摄像头驱动打印信息

usb摄像头驱动打印信息 文章目录 usb摄像头驱动打印信息 在ubuntu中接入罗技c920摄像头打印的信息如下&#xff1a; [ 100.873222] usb 3-2: new high-speed USB device number 5 using xhci_hcd [ 101.230728] usb 3-2: New USB device found, idVendor046d, idProduct08e5 …

SpringMVC的拦截器(Interceptor)

文章目录 1 拦截器概念2 拦截器入门案例2.1 环境准备2.2 拦截器开发步骤1:创建拦截器类步骤2:配置拦截器类步骤3:SpringMVC添加SpringMvcSupport包扫描步骤4:运行程序测试步骤5:修改拦截器拦截规则步骤6:简化SpringMvcSupport的编写 3 拦截器参数3.1 前置处理方法3.2 后置处理方…

使用frp进行内网穿透(远程连接内网服务器)

文章目录 云服务购买服务器端&#xff08;即我们购买的服务器&#xff09;配置客户端&#xff08;即我们自己的服务器&#xff09;配置使用xshell登录远程服务器在服务器端设置frp开机自启动在客户端设置frp开机自启动 这里主要介绍使用frp工具进行内网穿透&#xff0c;适合的场…

Spring6和SpringBoot3的新特性-你不得不了解的AOT原来这么简单

Spring6.0新特性 一、Spring的发展历史 二、AOT AOT是Spring6.0提供的一个新特性&#xff0c;Ahead of Time 提前编译。 1.AOT概述 1.1 JIT和AOT的关系 1.1.1 JIT JIT(Just-in-time) 动态编译&#xff0c;即时编译&#xff0c;也就是边运行边编译&#xff0c;也就是在程序运…

LangChain与大型语言模型(LLMs)应用基础教程:角色定义

如果您还没有看过我之前写的两篇博客&#xff0c;请先看一下&#xff0c;这样有助于对本文的理解&#xff1a; LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板 LangChain与大型语言模型(LLMs)应用基础教程:信息抽取 LangChain是大型语言模型(LLM)的应用框架,LangCha…

RK3568平台开发系列讲解(LCD篇)快速了解RK LCD的使用

🚀返回专栏总目录 文章目录 一、内核Config配置二、MIPI配置2.1 引脚配置2.2 背光配置2.3 显示时序配置2.3.1 Power on/off sequence2.3.2 Display-Timings三、EDP配置3.1 引脚配置3.2 EDP背光配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇章带大家快速了…

数据结构_查找

目录 1. 查找的基本概念 2. 顺序查找和折半查找 2.1 顺序查找 2.1.1 一般线性表的顺序查找 2.1.2 有序表的顺序查找 2.2 折半查找 2.3 分块查找 2.4 相关练习 3. 树型查找 3.1 二叉排序树 3.1.1 二叉排序树的定义 3.1.2 二叉排序树的查找 3.1.3 二叉排序树…

想要一个本地部署的海洋实景三维展示系统吗?

最近几年实景三维非常火&#xff0c;很多人包括博主都想将自己平时干的海洋测绘项目进行实景三维化&#xff0c;这样做的好处就是无论是管理数据还是成果展示都非常方便。我们可能会使用谷歌地图、奥维地图、图新地球等地图服务软件&#xff0c;它们也提供了一些测量、画图功和…

使用Hexo在Github上搭建个人博客

使用Hexo在Github上搭建个人博客 1. 安装Node和git2. 安装Hexo3. Git与Github的准备工作4. 将Hexo部署到Github5. 开始写作 1. 安装Node和git 在Mac上安装Node.js可以使用Homebrew&#xff0c;使用以下命令安装&#xff1a; brew install node使用以下命令安装Git&#xff1a; …

解决 Uncaught TypeError: SpriteCanvasMaterial is not a constructor.

文章目录 前言一、替代语法总结 前言 上周买了本《Three.js开发指南》, 第三版, 里面的语法不太跟趟, 有点旧, 倒也不能全怪作者, three迭代的确很快. 一、替代语法 这几天没事做, 加上前面本来就接触过Three, 很快进展到了第六章. 在推进 利用Canvas贴图给精灵(Sprite)增加样…

研发工程师玩转Kubernetes——启用microk8s的监控面板(dashboard)

安装插件 microk8s enable dashboard 查看dashboard 地址 由于dashboard是在kube-system的namespace中&#xff0c;我们可以使用下面指令查看它服务的地址。 microk8s kubectl get service -n kube-system kubernetes-dashboard 可以得到地址是https://10.152.183.167。 登…

Android Jetpack-Databinding基本使用

文章目录 让你的项目支持Databinding基本使用布局和绑定表达式常用运算符判空null获取对象属性避免空指针异常其他控件引用资源引用 事件处理import,variables,and includesimportVariablesIncludes 数据更新->UI更新监听字段变化更新监听对象变化更新 UI更新->数据更新绑…

MPLS隧道——隧道迭代与MPLS高可靠性

目录 MPLS隧道迭代 什么情况下需要隧道迭代 解决方法 MPLS高可靠性 VPN FRR VPN GR MPLS隧道迭代 什么情况下需要隧道迭代 解决方法 两种解决方法 将IBGP邻居更改为Vpnv4的IBGP邻居&#xff08;为目标网段产生私网标签&#xff0c;然后此带标签的BGP路由直接进入标签隧道…

作为程序员的你,常用的工具软件有哪些?

不会还有程序员没用过Chatgpt吧&#xff1f; 我现在的工作日常&#xff1a;把需求提给Chatgpt&#xff0c;代码出来后再自行润色一下代码&#xff0c;然后到工业环境里跑一下&#xff0c;没问题就可以提交了。一来一回效率提高了好几倍&#xff0c;摸鱼的时间都变多了…… 除了…