Qt开发 | Qmake与CMake | Qt窗口基类 | VS Qt项目与QtCreator项目相互转化 | Qt架构 | Qt学习方法

文章目录

  • 一、Qmake与CMake介绍
    • 1.Qmake
    • 2.CMake
    • 3.使用qmake还是cmake?
  • 二、Qt3个窗口基类的区别
  • 三、vs qt与QtCreator项目相互转化方法
    • 1.QtCreator项目转VS Qt
    • 2.VS Qt项目转QtCreator项目
  • 四、Qt架构介绍与学习方法详解

一、Qmake与CMake介绍

  Qmake和CMake都是构建系统,它们用于自动化编译和构建软件项目的过程。

1.Qmake

  Qmake是Qt独有的代码构建工具,主要用于Qt应用程序的构建。它是一个跨平台的构建系统,可以生成特定于平台的Makefile。Qmake使用一种名为Pro文件的脚本语言来定义项目的构建规则和依赖关系。Qmake的优势在于它与Qt紧密集成,可以自动处理Qt特有的构建需求,如MOC(Meta-Object Compiler)和UIC(User Interface Compiler)的调用。

特点

  • 专为Qt应用程序设计。
  • 支持跨平台构建。
  • 可以生成多种平台的Makefile。
  • 与Qt工具链紧密集成。

2.CMake

  CMake是C++通用的代码构建工具,它可以生成适用于多种编译器和平台的构建文件。CMake使用CMakeLists.txt文件来描述项目的构建过程,这些文件可以包含条件语句和循环,提供了更高的灵活性。CMake不仅限于C或C++项目,它也支持其他语言,并且可以与多种IDE(集成开发环境)和构建工具配合使用。

绝大多数C++开源项目都使用cmake管理代码,例如:obs、jsoncpp、libcurl、log4cplus等

特点

  • 跨平台,支持多种编译器和构建工具。
  • 使用CMakeLists.txt文件定义构建规则。
  • 支持条件语句和循环,提供高度灵活性。
  • 可以生成Makefile、Visual Studio解决方案文件等。
  • 广泛用于开源项目和大型软件项目。

3.使用qmake还是cmake?

  代码构建工具各有各的优势,不要过于纠结使用哪种,主要是看当初创建项目的人用哪种构建工具,不使用cmake也没关系,cmake也不是最好的解决方案,例如谷歌的GN,可以实现c++、java、ios项目的跨平台管理,比cmake厉害。qt项目若无特殊要求,使用qmake即可。

比较

  • 集成度:Qmake与Qt框架高度集成,而CMake更加通用。
  • 灵活性:CMake在构建配置方面提供了更多的灵活性。
  • 使用范围:Qmake主要用于Qt项目,CMake适用于各种类型的项目。
  • 跨平台性:两者都支持跨平台构建,但CMake在这方面更为广泛。

二、Qt3个窗口基类的区别

  • QMainWindow:包含菜单栏(QMenuBar)、工具栏(QToolBar)、状态栏(QStatusBar)和中心部件(central widget)。

    支持多文档界面(MDI),即在一个主窗口中可以打开多个文档窗口。常用于开发具有复杂界面的应用程序,如IDE、图像编辑器等。

    修改菜单栏与工具栏

    image-20240619132810653

    修改状态栏

    image-20240619134254052

    结果展示:

    image-20240619134231964

  • QWidget:基础窗口类

    一个普通的窗口,不包含菜单栏、状态栏,除了登陆界面,新建项目时建议使用QWidget,因为大部分的窗口可能都要做成无边框窗口,需要自定义标题栏,实现拉伸等;QMainWindow使用的场景不多

    image-20240619133035329

    image-20240619133056394

  • QDialog:对话框,常用来做登陆窗口、弹出窗口(例如设置界面)

    用于创建对话框。通常用于显示需要用户输入或确认的信息。常用于实现设置、选项、帮助等对话框。

    image-20240619134836343

    image-20240619134727279

    一般点击“登陆”后会跳到另一个窗口,因此,需要右击活动项目,点击“添加新文件”

    image-20240619135119339

    点击“Qt–>Qt设计器界面类”

    image-20240619135235593

    选择“Widget”界面模板,点击“下一步”

    image-20240619135340516

    点击“下一步”

    image-20240619135408773

    点击“完成”

    image-20240619135427857

    image-20240619135709161

    需要通过信号槽机制,实现当点击“登陆”按钮时,跳转到主窗口

三、vs qt与QtCreator项目相互转化方法

1.QtCreator项目转VS Qt

  首先,需要配置环境变量,将qmake.exe所在的目录输入到系统path。

image-20240619161410766

  然后,在cmd中输入转化命令:qmake -tp vc xxx.pro

image-20240619161737378

转化命令运行结果表明:出现cl命令冲突问题。

  解决办法是关闭cmd窗口,找到cl.exe路径配置到系统path中,再次打开cmd转换。

image-20240619162138950

image-20240619162320382

  转换后,用vs打开.vcxproj文件(双击),此时,项目属性中并没有Qt Project Settings。

image-20240619162812864

  此时,需要右键项目,找到“Qt”,点击“Convert custom build steps to Qt/MSBuild",再点击“是”。

image-20240619163113683

此时,项目属性中就出现Qt Project Settings。

image-20240619163326024

2.VS Qt项目转QtCreator项目

  在Qt VS Tools插件里点击“Create Basic.pro file”生成pro文件。image-20240619163939684

image-20240619164051431

image-20240619164131461

此时,会产生pri文件与pro文件。

image-20240619164350227

  再用QtCreator打开.pro文件(双击pro文件即可),选择构建套件

image-20240619164513824

image-20240619164648407

  将转换后的项目进行构建会失败

image-20240619164831884

此时,需要在QtCreator中添加模块

image-20240619165131102

四、Qt架构介绍与学习方法详解

  Qt不仅仅是一个界面库,它还有:

  • 数据容器:QString、QVector、QList、QMap
  • 网络模块:Http、TCP、UDP
  • 图形视图模块
  • 数据库模块
  • 程序打包

Qt常用控件

image-20240619174318533

Qt常用模块:通常Qt GUI项目需要包含:Core、Gui、Widgets这三个

image-20240619174833893

Qt学习方法

  • 多看Qt文档,自己多写代码测试;

  • 学习Qt提供的demo,自己调试,运行,分析;

  • Qt主要是用来做界面开发,要熟悉Qt设计界面的技巧,掌握各种控件的使用,非常熟悉各种布局的实现方案

    既要会用Qt设计器进行布局,又要非常熟悉手写布局;

    在做企业级项目时,很少用设计器(小项目),更多的是手写代码(企业级项目)

  • 熟悉无边框窗口的设计;

    后续会介绍无边框窗口的设计方法

  • 需要有一点界面交互的逻辑,例如自定义非标控件,以及各种样式表的使用;

    后续会进行介绍

  • 学习相关领域的知识,例如:图形图像、音视频、动画、Web交互、http编程、加解密;

  • 多总结,要有自己的代码库,以后遇到相同的模块需求,可以复用自己的代码;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue启动时的错误

解决办法一:在vue.config.js中直接添加一行代码 lintOnSave:false 关闭该项目重新运行就可启动 解决办法二: 修改组件名称

机械装备制造行业MES,实时监控生产流程

装备制造行业MES,是专门为装备制造行业设计的生产信息化管理系统。旨在实时监控装备制造生产流程,实现全流程的精细化管理和监控,提高生产效率、降低生产成本、提升产品质量。 本文将详细介绍装备制造行业MES的概念、技术及应用,…

放大招了|十亿参数大模型LLMs运行功耗仅需13W,内存使用量减少90%!

矩阵乘法(MatMul)历来是大型语言模型(LLMs)总体计算成本的主导因素,尤其在模型向更大维度嵌入和上下文长度发展时,这一成本呈指数级增长。 近期有一篇刚刚发表的论文中提出的方法完全去除了矩阵乘法操作&am…

系统架构师考点--系统配置与性能评价

大家好。今天我们来总结一下系统配置与性能评价的考点内容,这一部分一般是出在上午场的选择题中,占1-2分左右。 一、性能指标 计算机 对计算机评价的主要性能指标有:时钟频率(主频);运算速度;运算精度内存的存储容量…

现在纠结于到底是学stm32好还是Arduino好?

如果你就是要搞单片机,学STM32。 如果你要搞机器人、物联网、机器视觉、自动驾驶,就要学Arduino。 搞单片机,除了STM32之外,重点在于画好原理图和PCB。刚好我有一些资料,是我根据网友给的问题精心整理了一份「stm32的…

HarmonyOS Next开发学习手册——内存管理(GC)

GC(全称 Garbage Collection),即垃圾回收。在计算机领域,GC就是找到内存中的垃圾,释放和回收内存空间。当前主流编程语言实现的GC算法主要分为两大类:引用计数和对象追踪(即Tracing GC&#xff…

【系统架构设计师】计算机组成与体系结构 ③ ( 层次化存储结构 | 寄存器 | 高速缓存 | 内存 | 外存 )

文章目录 一、层次化存储结构1、层次化存储结构2、层次化存储结构 - 示例说明3、程序员可操作的部分 计算机 采用 分级存储结构 , 主要目的是 为了 解决 容量 / 价格 / 速度 之间的矛盾 ; 一、层次化存储结构 1、层次化存储结构 计算机 存储器 按照存储速度 由快到慢 进行排序 …

算法入门:二分查找及其Java实现

在程序开发中,算法是解决问题的核心。本篇博客将详细讲解一种高效的查找算法——二分查找,并通过Java代码示例帮助你理解其实现和应用。 如果你觉得这篇文章对你有帮助,不要忘记点赞、收藏和关注我,这将是对我最大的支持和鼓励&am…

2、数据库模型图、er图

关系 user和administarators是多对一的关系 user和order是一对多的关系 shipped和order是多对一的关系 order和books是多对多的关系 leavewords和order是一对一的关系 stock和books是一对多的关系 Chens 数据库表示法——ER图 Crows Foot数据库表示法——数据库模型图 Navicat表…

%运算符

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法介绍 在python中,可以使用%运算符进行灵活多样的格式化处理,通用的语法格式为: (格式模板&…

9.二维数组的遍历和存储

二维数组的遍历和存储 二维数组的遍历 二维数组a[3][4],可分解为三个一维数组,其数组名分别为: 这三个一维数组都有4个元素,例如:一维数组a[0]的 元素为a[0][0],a[0][1],a[0][2],a[0][3]。所以遍历二维数组无非就是先取出二维数组中得一维数组, 然后再从一维数组中取出每个元…

关于摄像头模组中滤光片的介绍

1、问题背景 红外截止滤光片(IR CUT Filter)是应用在摄像头模组中非常重要的一个器件,因人眼与 coms sensor 对光线各波长的响应不同, 人眼看不到红外光,但 sensor 能感应到(如下图是某sensor在各波长下的…

Docker之jekins的安装

jekins官网地址:Jenkins Plugins (https://plugins.jenkins.io/) jekins 的docker 官方地址:https://hub.docker.com/r/jenkins/jenkins jekins 的docker 允许命令文档地址: docker/README.md at master jenkinsci…

40岁学习java是否需要报班学习?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!应该不需要。各种公开免费的…

CS-隐藏防朔源-数据转发-中间件反向代理-Apache

目录 1、代理机安装Apache: 2、中间件设置转发: 添加代理 3、重启Apache服务 4、CS监听器配置转发机IP 实战情况下还是要准备两台外网服务器. --还是做个中转 1、代理机安装Apache: apt-get install apache2 a2enmod proxy proxy_ajp proxy_balancer proxy_co…

用友 U8+ 控制金额、单价等字段权限设置

进入路径 系统服务——权限——数据权限控制设置 本功能是数据权限设置的前提,用户可以根据需要先在数据权限控制设置中选择需要进行权限控制的对象。 数据权限的控制分为记录级和字段级两个层次,对应系统中的两个页签"记录级"和"字段…

配置Nginx二级域名

一、环境 (一)配置 1.服务器 linux CentOS 2.反向代理 Nginx 3.开放端口 云服务器开放端口80和443 二、域名备案 (一)腾讯云 1.腾讯云域名备案流程 备注:一级域名备案后,二级域名可以不用再备案&a…

Construct公司 从 0 到 1 基于 Kitex+Istio 的微服务系统建设

本文根据 2024 年 5 月 25 日在上海举办的“云原生✖️AI 时代的微服务架构与技术实践”CloudWeGo 技术沙龙上海站活动中,Construct 服务端总监 Jason 的演讲《从 0 到 1 基于 Kitex Istio 的微服务系统建设》整理而来。 在微服务架构的浪潮中,企业面临…

BioCLIP:物种图像的基础视觉模型

从无人机到个人手机,各种相机收集的自然世界图像是越来越丰富的生物信息来源。从图像中提取生物相关信息用于科学的计算方法和工具激增,尤其是计算机视觉。然而,其中大多数都是为特定任务设计的,不容易适应或扩展到新的问题、环境…