【Qt】一文总结新工程的创建

news2024/10/5 13:40:50

文章目录

    • 一、导读
    • 二、浅谈开发方式
      • (2-1)C++开发方式
      • (2-2)QtQuick qml开发方式
      • (2-3)python开发方式
    • 三、新工程创建向导下的Library
    • 四、其他项目
    • 五、其他工程项目
    • 六、Import Project选项
    • 七、总结

一、导读

在使用Qt进行项目开发过程中,QtCreator是一款流行多年的必备开发利器,本文基于QtCreator这款IDE,描述其『新文件和新工程』创建向导中各选项的含义,还简要分析使用QtCreator内部自带模板创建出的基础工程。

本文内容基于QtCreator版本:8.0.1:

对于一个全新的Qt项目,在项目开发实施之前需要考虑项目的开发方式,其中就包含了编程语言的选择,Qt主要提供了三种方式去开发自己的项目:

(1)C++开发方式

(2)QtQuick qml开发方式

(3)python开发方式

上述三种方式从计算机编程语言去考量。忽略Qt-android平台下的开发。

二、浅谈开发方式

(2-1)C++开发方式

如果项目选择了C++作为开发中所使用的编程语言,在使用QtCreator创建项目时,则选择『Application(Qt)->Qt Widgets Application/Qt Console Application』:

  • Qt Widgets Application :如果选择了该选项,则创建一个包含主窗口且基于Widget的Qt应用程序。也就是说,如果是一个需要包含窗体且使用C++作为开发方式的项目,就选择该选项。

  • Qt Console Application :如果选择了该选择,则创建一个控制台运行的Qt应用程序,也就是不带任何界面的Qt项目。

Widgets ApplicationConsole Application从源码上分别以QApplicationQCoreApplication类表示。

(2-2)QtQuick qml开发方式

QtQuick是Qt提供的一种炫酷界面快速开发的方式,qml是主要的开发语言,如果项目想以QtQuick进行开发,则选择『Application(Qt)->Qt Quick Application』:

以这个选项按照工程向导创建的项目,会自动生成一个main.cpp文件和一个main.qml文件。

在main.cpp文件中创建了QGuiApplication对象和QQmlApplicationEngine引擎,并指定了引擎需要解析的qml文件,这里是main.qml。在main.qml文件中,则描述了一个极简单的窗体。

(2-3)python开发方式

如果项目选择了python作为开发中所使用得编程语言,在使用QtCreator创建项目时,则选择『Application(Qt for Python)』:

  • Empty Application:该选项创建一个空的项目工程,使用python方式创建了QApplication。QtCerator内部模板生成的代码中不包含窗体描述部分。

  • Empty Windows :该选项会创建一个空的窗体应用程序,包含了一个窗体。

  • Window UI - Dynamic load :该选项创建一个带xxx.ui文件的工程,可以使用Qt Designer设计。(这种方式是以动态方式加载xxx.ui文件,源码上使用QUiLoader()实现)

  • Window UI :该选项与Window UI - Dynamic load功能类似,都会创建一个xxx.ui文件。与widget + C++开发中的ui文件一样,会将xxx.ui文件转换生成对应的界面类,只是这里是基于python语言的。

  • Qt Quick Application - Empty :该选项用于创建使用QtQuick qml + python开发的项目工程,QtCreator内部项目模块会创建一个工程描述文件xxx.pyproject、应用解析文件main.py和`应用描述文件main.qml

三、新工程创建向导下的Library

在上述第二小节描述了使用QtCreator创建基于Qt新项目的三种开发方式,本小节描述『新工程创建向导』下的Library选项。

如果想创建一个生成库的工程,则选择『Library』:

  • C++ Library :该选项用于创建一个生成库文件的工程,在编译构建成功后,会生成一个库文件(不同平台下生成的库文件不一样),这个库文件可以使用QPluginLoader加载或者Qt 应用程序在运行时加载使用,除此之外,生成的动态/静态库文件也用于其他工程项目在链接阶段使用。

  • Qt Quick 2 Extension Plugin :该选项会创建一个C++插件,使用QQmlEngine类可以将Qt Quick扩展动态加载到应用程序中。也就是说,该选项会创建一个C++插件,这个插件是使用C++语言编写的,我们可以在QtQuick qml项目工程中加载这个插件来使用。

  • Qt Creator Plugin :该选项用于创建一个能生成QtCreator插件的工程,在实际Qt开发中在选项使用较少。

四、其他项目

在QtCreator的『新工程创建向导』下,有一个其他项目选项:

我们可以使用该选项下的条目去创建实际项目开发过程中所需要的辅助项。

  • 设计师自定义控制:该选项用于创建一个Qt Designer的自定义控件或者一个自定义控件集合。对于实际工程项目开发中所使用的UI控制,如果想把它做成自定义控件直接在Qt Designer中拖拽使用,则使用该选项。

  • Qt Quick UI Prototype :该选项用于创建带有QML入口点的Qt Quick 2 UI项目。我们则可以在带有QML运行时的情况下加载使用。也就是,该选项下仅仅会创建一个qml文件。(该选项创建的不是一个完整的Qt Quick 项目,如果想要一个完整的Qt Quick项目工程,则使用『Application(Qt)->Qt Quick Application』)

  • Auto Test Project :该选项用于创建一个新的单元测试项目,允许我们验证代码是否适合使用。该选项本质上则会创建一个基于QtTest的测试工程代码模板。

  • 子目录项目 :该选项用于创建一个包含多个子项目的项目工程。如果一个项目中包含有多个子项目需要生成,例如,一个工程里面既要生成exe,又要生成dll库文件,则选择该选项,实现多个子项目的嵌套。(这个选项在实际开发中较为常用)

  • Empty qmake Project :该选项用于创建一个基于qmake的空项目,这允许创建一个没有任何默认类的应用程序。也就是该选项是最原始的状态,只会创建一个没有任何内容的xxx.pro工程管理文件。

  • Code Snippet :该选项用于创建一个基于qmake的测试项目,可以为其预先输入代码片段。也就是我们可以在工程创建向导中写入我们自己的代码片段。

五、其他工程项目

还可以使用QtCreator的『新工程创建向导』创建不是Qt项目的工程:

  • Plain C Application :该选项用于创建一个C语言简单的工程:包含一个main.c文件,文件中生成的代码仅包含了main()函数入口。

  • Plain C++ Application : 该选项用于创建一个C++语言简单的工程:包含一个main.cpp文件,文件中生成的代码仅包含了main()函数入口。

也就是说,使用QtCreator也能创建C/C++项目文件,只是需要注意编译构建环境的配置和选择。

六、Import Project选项

我们可以使用QtCreator导入由版本控制软件管控的项目工程或者存在本地磁盘上的工程:

  • Bazaar Clone(or Branch):Bazaar是一个分布式的版本控制系统。该选项用于想要使用Bazaar去Clone项目的场景。

  • Git Clone:Git同样也是一个开源的分布式版本控制系统。该选项用于想要使用git去Clone项目的场景。(在实际项目开发实施过程中,这种方式较为常用)

  • Mercurial Clone:Mercurial是一种使用Python语言实现的轻量级分布式版本控制系统。该选项用于想要使用Mercurial去Clone项目的场景。

  • Subversion Checkout:Subversion是一种集中式的版本控制系统(简称为SVN)。该选项用于想要使用SVN去Clone项目的场景。(在实际项目开发实施过程中,这种方式也较为常用)

  • CVS Checkout:CVS是一个C/S系统,是一个常用的代码版本控制软件。该选项用于想要使用CVS去Clone项目场景。

  • Import as qmake or CMake Project :导入不使用qmake、CMake、Qbs、Meson或Autotools的现有项目。该选项将创建一个项目文件,允许我们使用Qt Creator作为代码编辑器,并作为调试和分析工具的启动器。

  • 导入现有项目:该选项将创建一个项目文件,允许我们使用Qt Creator作为代码编辑器,并导入不使用qmake、CMake、Qbs、Meson或Autotools的现有本地项目。也就是说可以使用Qt Creator作为代码编辑器去编辑现有的项目中文件。

七、总结

本文主要描述QtCreaotr的『新工程创建向导』下的一些选项。在实际Qt项目开发过程中,Application(Qt)选项是最常用的。

实际Qt项目开发中,最重要的是规划项目文件和程序设计、编写、调试。QtCreator的『新工程创建向导』为开发工作提供了许多的快捷方式,且自动生成了一些最基本的代码,以加快开发效率。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux-Find命令

目录 Find 命令格式: 常用查找条件 案例展示: Find find 命令根据预设的条件递归查找文件或目录所在位置 命令格式: 命令格式:find 查找路径 查找条件1 查找条件2 .. [-exec 处理命令 {} \; ] –exec 可接额外的命令来处理查…

【Kubernetes 企业项目实战】03、基于 Alertmanager 发送报警到多个接收方(下)

目录 一、promethues 采集 tomcat 监控数据 1.1 制作 tomcat 镜像 1.2 基于上面的镜像创建一个 tomcat 实例 1.3 采集数据 二、promethues 采集 redis 监控数据 2.1 配置一个 Redis 的 exporter 2.2 查看 Prometheus 2.3 grafana 导入模板 三、Prometheus 监控 mysql …

【微服务】Nacos 前端设计

目录 一、背景 二、选型 React 1、Vue vs React vs Angular 1.1、npm trends 2、GitHub Stats 3、根据自身情况选型 4、现状 5、小结 6、React/Vue ⽣态 三、方案 💖微服务实战 💖 Spring家族及微服务系列文章 一、背景 我们需要提供⼀个简单…

Xilinx关于Aurora IP核仿真和使用

平台:vivado2017.4芯片:xc7k325tfbg676-2 (active)关于Aurora的开发学习。使用xilinx官方提供的IP核。官方资料,pg046-aurora-8b10b.pdf和pg074-aurora-64b66b-en-us-12.0.pdf。IP核的生成步骤首先在IP Catalog中搜索Aurora IP核关于此IP有两…

SpringBoot指标监控

目录 一、SpringBoot Actuator 1、简介 2、1.x与2.x的不同 3、如何使用 二、Actuator Endpoint 1、最常使用的端点 2、Health Endpoint 3、Metrics Endpoint 4、管理Endpoints 1、开启与禁用Endpoints 2、暴露Endpoints 三、定制 Endpoint 1、定制 Health 信息 2…

RepPoints原理与代码解析

paper:RepPoints: Point Set Representation for Object Detectioncode:https://github.com/microsoft/RepPoints背景在目标检测中,包含图像矩形区域的边界框bounding box作为处理的基本元素,贯穿整个检测流程,从ancho…

DevOps利器之一Docker

一、背景本篇文章主要阐述Docker在DevOps中的应用与价值,Docker部署与安装;因为搭建DevOps流程中所应用的工具及框架都部署到Docker,所以首先介绍Docker为后续做准备。Docker的主要目标是Build,Ship and Run Any App,Anywhere&…

Jitpack使用指南:maven-publish如虎,jitpack如翼 【安卓Java组件化模块化】【更多gradle技巧】

上文总结了三种多模块开发的方法。 第一种:在setting.gradle中定义子模块然后 api Project(:...),直接引用 。第二种,使用 maven-publish 部署至本地仓库第三种,使用 jitpack.io 等部署至远程服务器 我的第一个开源项目就依次用…

Mysql之增强查询

增强查询主要是对之前一些指令的补充 查询增强 主要针对单表查询的增强操作,也是上面一些细节的补充 -- 使用where语句 -- 查找1991.1.1后入职的员工 -- 主要是介绍在mysql中日期类型可以直接比较,需要注意格式 SELECT * FROM empWHERE hiredate &g…

【异常】记一次因修复漏洞扫描导致SpringSecurity出现的循环依赖问题

一、循环依赖问题 APPLICATION FAILED TO START Description: The dependencies of some of the beans in the application context form a cycle: ┌─────┐ | springSecurityConfig (field private XXXX.config.MyauthenticationProvider XXXX.config.SpringSecurityC…

十五天学会Autodesk Inventor,看完这一系列就够了(十),凸雕、贴图

众所周知,Autocad是一款用于二维绘图、详细绘制、设计文档和基本三维设计,现已经成为国际上广为流行的绘图工具。Autodesk Inventor软件也是美国AutoDesk公司推出的三维可视化实体模拟软件。因为很多人都熟悉Autocad,所以再学习Inventor&…

springcloud alibaba -- seata原理和使用

文章目录一、认识Seata1.1 Seata 是什么?1.2 了解AT、TCC、SAGA事务模式?AT 模式前提整体机制如何实现写隔离如何实现读隔离TCC 模式Saga 模式Saga 模式适用场景Saga 模式优势Saga 模式缺点二、Seata安装2.1 下载2.2 创建所需数据表2.2.1 创建 分支表、全局表、锁表2.2.2 创建…

内存一致性模型概念

phrase-20230117184107 内存一致性模型(Memory Consistency Models)提供内存一致性保证,一致性结果体现在程序内存操作是可预测的。例如在多核或多处理器硬件上,在编写并行的程序时,如果理解当前系统所使用的一致性模型,有助于使…

OpenStack GPU直通服务器

layout: post title: OpenStack GPU直通服务器 catalog: true tag: [OpenStack, GPU] 1. 概述2. 直通GPU特性3. 功能说明 3.1. 操作系统支持3.2. 设备支持 4. 实现方案5. 部署方案 5.1. 示例环境说明5.2. 上线步骤 5.2.1. 硬件安装5.2.2. GPU计算节点主机配置 5.2.2.1. IOMMU设…

【数据结构与算法学习8】二叉查找树的基本介绍与添加数据的过程

程序员语录: 把时髦的技术挂在嘴边,还不如把过时的技术记在心里。 1 二叉查找树是什么? 二叉查找树是一种数据结构,又叫作二叉搜索树或二叉排序树,采用了图的树形结构,数据存储于二叉查找树的各个结点中,每…

GEE 9:Earth Engine Reducers 的基本操作

目录1.Image 、ImageCollection and Regions Reducers(图层和区域的相关操作)1.1 Image Reductions(处理单个图层)1.2 ImageCollection Reductions(处理图层集)1.3 Greenest pixel (maximum NDVI) composit…

01背包——二维动态规划【c++】代码实现

今天学了01背包,就想来讲一讲,正好回顾一下(BZOJ上的题目)。 01背包 所谓01背包,也就是背包的一种,01背包和完全背包的区别就在于,01背包一件物品只能选择一次,而完全背包可以重复…

架构运维篇(七):Centos7/Linux中安装Zookeeper

版本说明 JDK :1.8(已安装)ZK : 3.8.0 安装部署Zookeeper 第一步:下载最新版本 官网地址:Apache DownloadsHome page of The Apache Software Foundationhttps://www.apache.org/dyn/closer.lua/zookeeper/zookeep…

libvirt零知识学习1 —— libvirt简介

本文内容部分取自《KVM实战 —— 原理、进阶与性能调优》,非常好的一本书。 1. 概述 提到KVM的管理工具,首先必须要介绍的无疑是大名鼎鼎的libvirt。libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和应用程序接口。并且,一些常用的虚…

Oracle VM VirtualBox 安装 CentOS Linux

Virtual Box VirtualBox是一个强大的、面向个人用户或者企业用户的虚拟机产品,其支持x86以及AMD64/Intel64的计算架构,功能特性丰富、性能强劲,支持GPL开源协议,其官方网址是www.virtualbox.org,由Oracle开源&#xf…