Linux系统 C/C++编程基础——基于Qt的图形用户界面编程
ℹ️大家好,我是练小杰,今天周四了,距离除夕只有4天了,各位今年卫生都搞完了吗!😆
本文是接着昨天Linux 系统C/C++编程的知识继续讲,基于Qt的图形用户界面编程概念及其命令,后续会不断添加相关内容噢~~
回顾:【基于GTK+的图形用户界面编程】
Linux专栏:🔝【Linux零基础开始】【Shell 脚本编程】
文章目录
- Qt简介
- 功能
- Qt安装
- 方法一:使用包管理器安装Qt(适用于Ubuntu系统)
- 方法二:使用Snap包安装Qt(适用于Linux发行版)
- 方法三:使用Qt官方安装程序
- 方法四:使用Qt Maintenance Tool
- 配置环境变量
- 配置步骤:
- 安装中可能遇到的问题
- 缺少依赖库
- 权限问题
- Qt安装的图形界面
- 在`Ubuntu`命令行中启动Qt设置向导,并提供Qt账户信息。
- 选择安装组件
- Qt Creator欢迎界面
- Qt Creator使用
- Qt的功能和特性
- 构建的系统
- Qt 工具集成
- 插件系统
- 用户界面
- Qt Creator开发示例
Qt简介
Qt
是一个跨平台的C++开发库,设计思想是同样的C++代码无需修改就可以在Windows、Linux、Mac OS等平台上使用。
Qt
起初是由Trolltech(奇趣科技)公司开发的跨平台C++图形用户界面应用程序开发框架。
功能
Qt
不但拥有了完善的C++图形库,而且近年来的版本逐渐集成了数据库、OpenGL库、多媒体库、网络、脚本库、XML库、WebKit库等。- 并且,
Qt 5
是一个全新的用于跨平台应用程序和用户界面开发框架的版本,可应用于桌面、嵌入式和移动应用程序,在性能、功能和易用性方面做了极大的提升。
Qt安装
方法一:使用包管理器安装Qt(适用于Ubuntu系统)
- 更新包列表:
sudo apt update
- 安装Qt开发工具包:
sudo apt install qt5-default qtcreator
qt5-default
:安装Qt 5的默认版本。
qtcreator
:Qt的集成开发环境(IDE)
- 验证安装
qmake -v
方法二:使用Snap包安装Qt(适用于Linux发行版)
- 安装Snap(如果尚未安装):
sudo apt install snapd
- 安装Qt Creator:
sudo snap install qtcreator
方法三:使用Qt官方安装程序
- 下载Qt安装程序:
访问【Qt官方网站】下载适用于Linux的Qt安装程序(一般是一个
.run
文件)。
- 赋予执行权限并运行安装程序
chmod +x qt-unified-linux-x64-<version>.run
./qt-unified-linux-x64-<version>.run
替换
<version>
为要下载的版本号
- 按照安装向导完成安装:
选择安装路径和所需的组件。
完成安装后,配置环境变量(通常安装程序会自动完成)。
方法四:使用Qt Maintenance Tool
- 下载Qt安装程序:
同样, 【Qt官方网站】下载适用于Linux的Qt安装程序。
- 运行安装程序并选择“
Maintenance Tool
”
./qt-unified-linux-x64-<version>.run
- 使用Maintenance Tool进行管理
通过Maintenance Tool更新Qt版本、安装额外的组件或卸载不需要的部分。
配置环境变量
无论使用哪种方法安装Qt,通常需要配置环境变量以便在终端中直接使用Qt工具。
配置步骤:
- 打开终端并编辑bash配置文件,也可以使用你喜欢的文本编辑器。
nano ~/.bashrc
- 添加以下行 (假设
Qt
安装在/opt/Qt
):
export PATH=/opt/Qt/5.15.2/gcc_64/bin:$PATH
这里要根据实际安装路径和版本号进行调整。
- 保存文件并应用更改:
source ~/.bashrc
- 验证安装, 检查Qt版本信息
qmake -v
- 运行Qt Creator:
在终端中输入
qtcreator
或通过应用菜单启动Qt Creator
安装中可能遇到的问题
缺少依赖库
如果在安装过程中遇到缺少依赖库的错误,可以使用包管理器安装相应的库。
比如:
sudo apt install build-essential libgl1-mesa-dev
权限问题
确保你有足够的权限执行安装程序,或使用
sudo
提升权限。
Qt安装的图形界面
在Ubuntu
命令行中启动Qt设置向导,并提供Qt账户信息。
选择安装组件
Qt Creator欢迎界面
Qt Creator使用
Qt Creator 是由 Qt 公司开发的一款跨平台的集成开发环境(IDE),主要用于 Qt 应用程序的开发。它为开发者提供了一个集成的工具集,涵盖了从代码编写、编译、调试到部署的整个开发流程。
Qt的功能和特性
- 复杂代码编辑器。
- 版本控制。
- 集成用户界面设计器:
Qt Creator 提供了两个集成的可视化编辑器:用于通过 Qt widget 生成用户界面的 Qt Designer,以及用于通过
QML 语言开发动态用户界面的 Qt Quick Designer。
- 项目和编译管理。
- 桌面和移动平台。
- Qt模拟器。
构建的系统
Qt Creator 支持多种构建系统
- qmake:Qt 传统的构建系统,简单易用,适合中小型项目。
- CMake:现代的跨平台构建系统,适合大型和复杂项目。
- Qbs:Qt 推出的新一代构建系统,灵活且高效。
- 自定义构建步骤:允许用户自定义构建步骤和脚本,满足特定需求。
Qt 工具集成
Qt Creator 与 Qt 框架紧密集成,提供了多种 Qt 专用工具。
Qt Designer
:集成 Qt Designer,方便进行 Qt 界面设计。Qt Linguist
:集成 Qt Linguist,方便进行应用程序的国际化。Qt Resource Editor
:方便管理 Qt 资源文件,如图标、翻译文件等。Qt Quick Designer
:支持 Qt Quick 界面设计,提供可视化编辑功能。
插件系统
Qt Creator
支持插件扩展,用户可以通过安装插件来扩展 IDE 的功能。
- 版本控制插件:如 Git、Subversion 等。
- 语言支持插件:如 Python、Ruby 等。
- 工具集成插件:如 Valgrind、Doxygen 等。
用户界面
Qt Creator
的用户界面设计直观,包含了多个关键组件。
- 主窗口:包含菜单栏、工具栏、项目视图、代码编辑器、输出面板等。
- 项目视图:显示项目的文件结构,方便导航和管理项目文件。
- 代码编辑器:支持语法高亮、代码补全、代码折叠、重构功能等,提升编码效率。
- 输出面板:显示编译输出、调试信息、应用程序输出等。
Qt Creator开发示例
- 选择项目模板
- 设置项目名称和路径
- 选择项目要使用的套件
-
设置类信息
-
项目管理汇总信息
-
项目管理界面
-
图形用户界面设计
-
编辑标签文本
- 正常运行结果
-
编译输出信息
-
选择构建方式
今晚的内容到这里就结束了😆
ℹ️想了解更多,点击主页【练小杰的CSDN】
⚠️若博客里的内容有问题,欢迎指正,我会及时修改!!!
明天再见啦,各位🧍大佬们~~
相关文章:

Linux系统 C/C++编程基础——基于Qt的图形用户界面编程
ℹ️大家好,我是练小杰,今天周四了,距离除夕只有4天了,各位今年卫生都搞完了吗!😆 本文是接着昨天Linux 系统C/C编程的知识继续讲,基于Qt的图形用户界面编程概念及其命令,后续会不断…...

并发编程 - 线程同步(一)
经过前面对线程的尝试使用,我们对线程的了解又进一步加深了。今天我们继续来深入学习线程的新知识 —— 线程同步。 01、什么是线程同步 线程同步是指在多线程环境下,确保多个线程在同时使用共享资源时不会发生冲突或数据不一致问题的技术,保…...

PyTorch入门 - 为什么选择PyTorch?
PyTorch入门 - 为什么选择PyTorch? Entry to PyTorch - Why PyTorch? by JacksonML $ pip install pytorch安装完毕后,可以使用以下命令,导入第三方库。 $ import pytorch...

leetcode刷题记录(八十六)——84. 柱状图中最大的矩形
(一)问题描述 84. 柱状图中最大的矩形 - 力扣(LeetCode)84. 柱状图中最大的矩形 - 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾…...

Android GLSurfaceView 覆盖其它控件问题 (RK平台)
平台 涉及主控: RK3566 Android: 11/13 问题 在使用GLSurfaceView播放视频的过程中, 增加了一个播放控制面板, 覆盖在视频上方. 默认隐藏setVisibility(View.INVISIBLE);点击屏幕再显示出来. 然而, 在RK3566上这个简单的功能却无法正常工作. 通过缩小视频窗口可以看到, 实际…...

开源鸿蒙开发者社区记录
lava鸿蒙社区可提问 Laval社区 开源鸿蒙项目 OpenHarmony 开源鸿蒙开发者论坛 OpenHarmony 开源鸿蒙开发者论坛...

【Linux网络编程】传输层协议
目录 一,传输层的介绍 二,UDP协议 2-1,UDP的特点 2-2,UDP协议端格式 三,TCP协议 3-1,TCP报文格式 3-2,TCP三次握手 3-3,TCP四次挥手 3-4,滑动窗口 3-5…...

10个非常基础的 Javascript 问题
Javascript是一种用于Web开发的编程语言。JavaScript在网络的客户端上运行。 根据MDN,JavaScript(通常缩写为JS)是一种轻量级的,解释性的,面向对象的语言,具有一流的功能,并且最著名的是Web页面…...

Mysql索引(学习自用)
目录 一、索引概述 优缺点 二、索引结构 1、索引数据结构 2、索引支持结构 3、B树 4、B树 5、hash索引 6、为啥采用B树索引 三、索引分类 四、索引语法 五、索引性能分析 5.1查看执行频率 5.2慢查询日志 5.3profiling 5.4explain 六、索引使用规则 6.1验证索…...
eniops库中reduce函数使用方法
reduce 是 eniops 中的一个常用函数,用于对张量进行降维操作。它允许你通过指定维度名称和操作类型(如求和、均值等)来简化张量的形状。 import eniops import torch# 创建一个示例张量 x torch.randn(2, 3, 4)# 使用 reduce 进行降维操作 …...

阴沟翻船题——Longest Substring Without Repeating Characters
一、事件概述 今天接到一个面试,让线上做题。面试官出了个leetcode的题。题目如图所示: 我没有刷过leetcode,上学时候我们做的hdu-acm和codeforces。咋一接到题目,看到是个字符串题,并且找最长字串,第一反…...

Jetpack Compose 和 Compose Multiplatform 还有 KMP 的关系
今天刚好看到官方发布了一篇文章,用于讨论 Compose Multiplatform 和 Jetpack Compose 之间的区别,突然想起之前评论区经常看到说 “Flutter 和 CMP 对于 Google 来说项目重叠的问题”,刚好可以放一起聊一聊。 最近写的几篇内容写的太干&…...
微信小程序中实现背景图片完全覆盖显示,可以通过设置CSS样式来实现
wxml页面代码 <view class"beijing"></view>wxss样式代码 /* pages/beiJing/beiJing.wxss */ .beijing {background-image: url("https://www.qipa250.com/qipa.jpg");/* 定位:绝对定位 */position: absolute;/* 上下左右都定位到…...

【0x0012】HCI_Delete_Stored_Link_Key命令详解
目录 一、命令参数 二、命令格式及参数 2.1. HCI_Delete_Stored_Link_Key 命令格式 2.2. BD_ADDR 2.3. Delete_All 三、生成事件及参数 3.1. HCI_Command_Complete事件 3.2. Status 3.3. Num_Keys_Deleted 四、命令执行流程 4.1. 命令发送阶段 4.2. 控制器处理阶段…...

console的各种方法
console除了常用的log方法,还有很多方便的方法。 console.table 表格 将数据以表格形式展示 console.group 分组 console.group、console.groupEnd:开启、结束分组,使结构更加清晰 console.dir 对象 打印函数或dom时,log无法打…...

spring boot关于系统首页自动跳转拼接到index
业务说明 通过http://localhost:8091访问服务器时,会动态的跳转到系统的欢迎页面. 实现原理: 说明程序启动时会自动的加载一个默认的请求路径(url:http://localhost:8091/) index 之后动态的拼接前缀和后缀. /WEB-INF/views/index.jsp...
指针生成网络(PGN)详细指南(引入)
一、Seq2Seq模型:编码-解码框架的开山之作 我们首先要了解的是seq2seq(Sequence-to-Sequence)模型。它最早由Google在2014年的一篇论文中提出,是第一个真正意义上的端到端的编码器-解码器(Encoder-Decoder)…...

案例研究丨浪潮云洲通过DataEase推进多维度数据可视化建设
浪潮云洲工业互联网有限公司(以下简称为“浪潮云洲”)成立于2018年,定位于工业数字基础设施建设商、具有国际影响力的工业互联网平台运营商、生产性互联网头部服务商。截至目前,浪潮云洲工业互联网平台连续五年入选跨行业跨领域工…...

k8s 蓝绿发布、滚动发布、灰度发布
在Kubernetes(k8s)中,蓝绿发布、滚动发布、灰度发布(金丝雀发布)是三种常见的应用部署和更新策略。下面将分别对这几种发布方式进行说明,并给出相应的例子。 蓝绿发布 蓝绿发布是一种无缝切换版本的部署策…...
UWB原理:AOA测角原理Angel of Arrival
AOA测角原理Angel of Arrival 准备工作: UWB默认使用channel=9,Frequency = 7987.2mMhz,约8GHz。 波长 天线RX1, RX2间距一般为20mm左右,假如发射端TX离2个RX距离2m=2000mm,大约是100倍天线间距。2个入射角可以近似相同。 测角原理: <...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...