当前位置: 首页 > news >正文

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工具。

配置步骤:

  1. 打开终端并编辑bash配置文件,也可以使用你喜欢的文本编辑器。
nano ~/.bashrc
  1. 添加以下行 (假设Qt安装在/opt/Qt):
export PATH=/opt/Qt/5.15.2/gcc_64/bin:$PATH

这里要根据实际安装路径和版本号进行调整。

  1. 保存文件并应用更改:
source ~/.bashrc
  1. 验证安装, 检查Qt版本信息
qmake -v
  1. 运行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的图形用户界面编程

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

并发编程 - 线程同步(一)

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

PyTorch入门 - 为什么选择PyTorch?

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

leetcode刷题记录(八十六)——84. 柱状图中最大的矩形

&#xff08;一&#xff09;问题描述 84. 柱状图中最大的矩形 - 力扣&#xff08;LeetCode&#xff09;84. 柱状图中最大的矩形 - 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。求在该柱状图中&#xff0c;能够勾…...

Android GLSurfaceView 覆盖其它控件问题 (RK平台)

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

开源鸿蒙开发者社区记录

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

【Linux网络编程】传输层协议

目录 一&#xff0c;传输层的介绍 二&#xff0c;UDP协议 2-1&#xff0c;UDP的特点 2-2&#xff0c;UDP协议端格式 三&#xff0c;TCP协议 3-1&#xff0c;TCP报文格式 3-2&#xff0c;TCP三次握手 3-3&#xff0c;TCP四次挥手 3-4&#xff0c;滑动窗口 3-5&#xf…...

10个非常基础的 Javascript 问题

Javascript是一种用于Web开发的编程语言。JavaScript在网络的客户端上运行。 根据MDN&#xff0c;JavaScript&#xff08;通常缩写为JS&#xff09;是一种轻量级的&#xff0c;解释性的&#xff0c;面向对象的语言&#xff0c;具有一流的功能&#xff0c;并且最著名的是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 中的一个常用函数&#xff0c;用于对张量进行降维操作。它允许你通过指定维度名称和操作类型&#xff08;如求和、均值等&#xff09;来简化张量的形状。 import eniops import torch# 创建一个示例张量 x torch.randn(2, 3, 4)# 使用 reduce 进行降维操作 …...

阴沟翻船题——Longest Substring Without Repeating Characters

一、事件概述 今天接到一个面试&#xff0c;让线上做题。面试官出了个leetcode的题。题目如图所示&#xff1a; 我没有刷过leetcode&#xff0c;上学时候我们做的hdu-acm和codeforces。咋一接到题目&#xff0c;看到是个字符串题&#xff0c;并且找最长字串&#xff0c;第一反…...

Jetpack Compose 和 Compose Multiplatform 还有 KMP 的关系

今天刚好看到官方发布了一篇文章&#xff0c;用于讨论 Compose Multiplatform 和 Jetpack Compose 之间的区别&#xff0c;突然想起之前评论区经常看到说 “Flutter 和 CMP 对于 Google 来说项目重叠的问题”&#xff0c;刚好可以放一起聊一聊。 最近写的几篇内容写的太干&…...

微信小程序中实现背景图片完全覆盖显示,可以通过设置CSS样式来实现

wxml页面代码 <view class"beijing"></view>wxss样式代码 /* pages/beiJing/beiJing.wxss */ .beijing {background-image: url("https://www.qipa250.com/qipa.jpg");/* 定位&#xff1a;绝对定位 */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方法&#xff0c;还有很多方便的方法。 console.table 表格 将数据以表格形式展示 console.group 分组 console.group、console.groupEnd&#xff1a;开启、结束分组&#xff0c;使结构更加清晰 console.dir 对象 打印函数或dom时&#xff0c;log无法打…...

spring boot关于系统首页自动跳转拼接到index

业务说明 通过http://localhost:8091访问服务器时,会动态的跳转到系统的欢迎页面. 实现原理: 说明程序启动时会自动的加载一个默认的请求路径(url:http://localhost:8091/) index 之后动态的拼接前缀和后缀. /WEB-INF/views/index.jsp...

指针生成网络(PGN)详细指南(引入)

一、Seq2Seq模型&#xff1a;编码-解码框架的开山之作 我们首先要了解的是seq2seq&#xff08;Sequence-to-Sequence&#xff09;模型。它最早由Google在2014年的一篇论文中提出&#xff0c;是第一个真正意义上的端到端的编码器-解码器&#xff08;Encoder-Decoder&#xff09…...

案例研究丨浪潮云洲通过DataEase推进多维度数据可视化建设

浪潮云洲工业互联网有限公司&#xff08;以下简称为“浪潮云洲”&#xff09;成立于2018年&#xff0c;定位于工业数字基础设施建设商、具有国际影响力的工业互联网平台运营商、生产性互联网头部服务商。截至目前&#xff0c;浪潮云洲工业互联网平台连续五年入选跨行业跨领域工…...

k8s 蓝绿发布、滚动发布、灰度发布

在Kubernetes&#xff08;k8s&#xff09;中&#xff0c;蓝绿发布、滚动发布、灰度发布&#xff08;金丝雀发布&#xff09;是三种常见的应用部署和更新策略。下面将分别对这几种发布方式进行说明&#xff0c;并给出相应的例子。 蓝绿发布 蓝绿发布是一种无缝切换版本的部署策…...

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

Flutter鸿蒙化适配中遇到的问题

Flutter 环境搭建避坑指南Flutter 作为跨平台开发的热门框架&#xff0c;凭借一套代码多端运行的优势&#xff0c;深受开发者喜爱&#xff0c;但环境搭建与适配却是新手入门的第一道拦路虎。我在初次配置 Flutter 开发环境时&#xff0c;接连踩中环境变量、模拟器版本、第三方工…...

宝塔部署前后端时,配置域名与ssl证书

创建文件夹1.后端部署部署之后点击设置这步骤最关键# HTTP反向代理相关配置开始 >>>location ~ /purge(/.*) {proxy_cache_purge cache_one $Host$request_uri$is_args$args;}location / {proxy_pass http://127.0.0.1:8773;proxy_set_header Host $Host:$server_port…...

终极Kando多语言指南:如何快速实现跨平台饼状菜单的国际化支持

终极Kando多语言指南&#xff1a;如何快速实现跨平台饼状菜单的国际化支持 【免费下载链接】kando &#x1f338; Do things with utmost efficiency. 项目地址: https://gitcode.com/gh_mirrors/ka/kando Kando是一款高效的跨平台饼状菜单工具&#xff0c;通过直观的径…...

Arduino模拟输入校准库:软件定义ADC精度提升方案

1. AnalogInput 库概述AnalogInput 是一个专为 Arduino 平台设计的轻量级模拟输入信号处理库&#xff0c;其核心工程目标是在资源受限的微控制器上实现高鲁棒性的自动校准与稳定采样。不同于 Arduino 原生analogRead()的裸调用方式&#xff0c;该库通过软件层面的系统性补偿机制…...

从设计到上线:基于快马平台开发一个具备完整功能的qclaw官网实战指南

从设计到上线&#xff1a;基于快马平台开发一个具备完整功能的qclaw官网实战指南 最近接手了一个qclaw官网的开发需求&#xff0c;需要从零开始构建一个具备完整功能的官方网站。经过调研&#xff0c;我选择了InsCode(快马)平台作为开发环境&#xff0c;因为它不仅提供了完整的…...

一码一物的生成软件,为什么总能先把窜货和返利黑洞堵住?

一码一物的生成软件&#xff0c;为什么总能先把窜货和返利黑洞堵住&#xff1f;很多老板嘴上说生意难做&#xff0c;真把账摊开看&#xff0c;难的不是卖不出去&#xff0c;而是货卖到哪儿不知道、钱花给谁不清楚、促销有没有真拉动更说不明白。一码一物的生成软件&#xff0c;…...

嵌入式开发中的模块化编程与驱动分离实践

1. 模块化编程与驱动分离的核心价值在嵌入式开发领域&#xff0c;模块化编程早已不是新鲜概念。我第一次真正体会到它的威力是在2016年参与某新能源汽车BMS&#xff08;电池管理系统&#xff09;开发时。当时团队里有8个工程师同时开发不同功能模块&#xff0c;如果没有严格的模…...

Flink的反压机制

目录 1. 什么是反压? 2. Flink 反压机制的演变 第一代:基于 TCP 的传播(Flink 1.5 之前) 第二代:基于信用制的反压(Flink 1.5+,当前版本) 3. 基于信用制的反压详解 核心组件 工作流程(对应上图) 优势 4. 如何识别和处理反压? 识别(通过 Flink Web UI) …...

宽带任意阶贝塞尔光束模型与超表面实现案例

宽带任意阶 贝塞尔光束 超表面 模型 fdtd 案例内容&#xff1a;主要包括文章的两个贝塞尔光束模型&#xff0c;一个零阶贝塞尔光束一个一阶贝塞尔光束&#xff0c;采用二氧化钛介质单元执行几何相位来构建&#xff1b; 案例包括fdtd模型、fdtd设计脚本、Matlab计算代码和复现结…...

CherryStudio+Obsidian联动指南:如何让本地笔记成为大模型的长期记忆?

CherryStudio与Obsidian深度整合&#xff1a;构建AI可理解的长期记忆系统 在信息爆炸的时代&#xff0c;我们每天都在产生大量笔记和知识片段&#xff0c;但这些内容往往沉睡在本地文件中&#xff0c;无法与智能工具形成有效互动。Obsidian以其独特的网状笔记结构和本地Markdow…...