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个入射角可以近似相同。 测角原理: <...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...