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

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...

iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...