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

Linux下在qtcreator中创建qt程序

目录

1、新建项目

2、单工程项目创建 

3、多工程项目创建

 4、添加子工程(基于多工程目录结构)

5、 .pro文件


1、新建项目

切换到“编辑”界面,点击菜单栏中的“文件”-“新建文件或项目”

2、单工程项目创建 

只有一个工程的项目,新建模板时就只用在“项目”-“Application”中选,最右边的一栏有该模板的解释说明。按照需求创建对应的应用程序,在此我们创建一个最常用的带UI的qt应用程序作为示范。

选择“Qt Widget Application”,点击“Choose”按钮,进行创建。设置项目名称与项目路径,如图所示。设置完成后,点击“下一步”。

 因为我们使用了集成安装包,QtCreator的环境都已经自动安装好了,不用配置Kit,可以直接点击下一步。如果在当前页面“下一步”按钮被禁用了,则代表需要配置Kit。详细配置可以看该章节第四点。

配置类信息,设置类名与编译文件等的名称,点击下一步。注:建议类名与头文件、源文件、ui文件的名称与大小写保持一致。如图所示。

项目建立完成。该界面可以查看即将生成的所有文件与路径。因为是单工程项目,不需要配置“作为子项目添加到项目中”;“添加到版本控制系统”,如果有需要可以选择。:.pro文件是qt的配置文件。

3、多工程项目创建

要创建一个多工程的项目,首先要建一个总的项目文件夹,作为根项目。

“文件”-“新建文件或项目”-“其他项目”-“子目录项目”-“Choose”。可以看到右边选中“子目录项目”后,右边的解释。

设置项目路径与总配置文件名称。

 点击下一步可以看到即将生成的目录,该目录只生成一个.pro,作为总配置文件。

 点击“完成&添加子项目”,对子项目进行添加,步骤与创建单项目目录步骤基本一致,唯一不同的是需要配置“汇总”-“作为子项目添加到项目中”,选择刚才创建的根项目,点击“完成”即可。

 创建成功后,目录结构如图所示。可以看到总项目目录“MulPrj”下存在一个子项目目录“Projrct_1”,“Project_1”下存在该项目的配置文件与.h/.cpp等文件。

第一个创建的工程应该为Application项目,可作为启动项。

点击运行程序显示窗口。

 4、添加子工程(基于多工程目录结构)

添加子工程有两个方法。

  • 点击多工程项目目录结构的根项目,右键-“新子项目”,进行子项目的添加。

  • 点击“文件”-“新建文件或项目”。

但是不论哪种方法,进入模板选择界面后,都需要选择“Library”-“C++库”。

进入子项目的创建。

 勾选需要使用到的模块,一般勾选图中框起来的三个。

仍然让项目名称与.h/.cpp文件名称保持一致。

“作为子项目添加到项目中”仍然选择根项目,然后点击“完成”。

 此时的目录结构如下:

文件夹下的目录结构如下:

5、 .pro文件

在多工程项目中存在多个.pro文件,大致可以分为三类:

  • 根项目.pro:例如MulPrj.pro,用来控制所有子项目。

在这里我们只关注“SUBDIRS”,是根项目的固定写法,用来声明工程目录集的,需要添加或删除工程都可以在这里进行,删除对应的工程名称保存后,qt自动删除树目录结构下的对应工程。

注释之后可以看到目录结构下的工程都不见了。

也可以指定到目录文件夹下的.pro,在.pro与工程文件家名称不相同时使用。

  •  启动项.pro:例如Project_1.pro,作为启动项,与子工程的配置有一些不同。
  • Lib子工程.pro:例如Project_2.pro,作为创建时以library作为模板创建的工程。
#-------------------------------------------------
#
#ProjectcreatedbyQtCreator2023-03-03T14:27:35
#
#-------------------------------------------------QT+=coregui#“QT”是使用的QT库,从向导创建中可以看出,默认包含gui与core。如果不使用则生成的为QT-=coregui。这里是“+=”代表两个都使用。greaterThan(QT_MAJOR_VERSION,4):QT+=widgetsTARGET=Project_1  #生成.so目标,名称不做修饰,不用添加.so,自动生成名称.so。如:TARGET = Project_change  ,生成的.so为“Project_change.so”
DESTDIR= ../Bin#指定.so的生成路径
TEMPLATE=app#固定写法 主工程为app,子工程为lib#Thefollowingdefinemakesyourcompileremitwarningsifyouuse
#anyfeatureofQtwhichhasbeenmarkedasdeprecated(theexactwarnings
#dependonyourcompiler).Pleaseconsultthedocumentationofthe
#deprecatedAPIinordertoknowhowtoportyourcodeawayfromit.
DEFINES+=QT_DEPRECATED_WARNINGS  #预定义头#YoucanalsomakeyourcodefailtocompileifyouusedeprecatedAPIs.
#Inordertodoso,uncommentthefollowingline.
#YoucanalsoselecttodisabledeprecatedAPIsonlyuptoacertainversionofQt.
#DEFINES+=QT_DISABLE_DEPRECATED_BEFORE=0x060000#disablesalltheAPIsdeprecatedbeforeQt6.0.0CONFIG+=c++11SOURCES+=\
main.cpp\
Project_1.cppHEADERS+=\
Project_1.hFORMS+=\
Project_1.ui#Defaultrulesfordeployment.
qnx:target.path=/tmp/$${TARGET}/bin
else:unix:!android:target.path=/opt/$${TARGET}/bin
!isEmpty(target.path):INSTALLS+=target

在pro中配置目标路径后,在“项目”-“概要”中取消勾选“shadow build”,让makefile默认生成在该项目.pro所在路径。

相关文章:

Linux下在qtcreator中创建qt程序

目录 1、新建项目 2、单工程项目创建 3、多工程项目创建 4、添加子工程(基于多工程目录结构) 5、 .pro文件 1、新建项目 切换到“编辑”界面,点击菜单栏中的“文件”-“新建文件或项目” 2、单工程项目创建 只有一个工程的项目&#…...

快递再多也不怕!你的顺丰快递用上5G“神器”

互联网时代,剁手党疯狂“买买买”之后,快递件量再创新高。《2023年6月中国快递发展指数报告》显示,2023二季度单月快递业务量稳定在百亿件以上。其中,由于“618”电商促销活动与父亲节叠加,6月16日至20日单日揽收量均超…...

微信小程序:模板使用

目录 模板的优点: 一、静态模板创建 二、静态模板使用 1.*.wxml引入模板 2.模板使用 3.*.wxss引入模板的样式 三、动态模板创建 四、动态模板使用 1.*.wxml引入模板 2.模板使用 3.*.js定义动态数据 五、结果展示 总结 模板的优点: 有利于保持网…...

AUTOSAR NvM Block的三种类型

Native NVRAM block Native block是最基础的NvM Block,可以用来存储一个数据,可以配置长度、CRC等。 Redundant NVRAM block Redundant block就是在Native block的基础上再加一个冗余块,当Native block失效(读取失败或CRC校验失…...

Vue+ElementUI实现选择指定行导出Excel

这里记录一下,今天写项目时 的一个需求,就是通过复选框选中指定行然后导出表格中选中行的Excel表格 然后这里介绍一个工具箱(模板):vue-element-admin 将它拉取后,运行就可以看到如下界面: 这里面的很多功能都已经实现…...

SNMP简单介绍

SNMP SNMP是广泛应用于TCP/IP网络的网络管理标准协议,该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。SNMP采用轮询机制,提供最基本的功能集,适合小型、快速、低价格的环境使用&#xf…...

使用python对图像加噪声

加上雨点噪声 import cv2 import numpy as npdef get_noise(img, value10):#生成噪声图像>>> 输入: img图像value 大小控制雨滴的多少 >>> 返回图像大小的模糊噪声图像noise np.random.uniform(0, 256, img.shape[0:2])# 控制噪声水平&#xff…...

以 Java NIO 的角度理解 Netty

文章目录 前言Java NIO 工作原理Selector 的创建ServerSocketChannel 的创建ServerSocketChannel 注册 Selector对事件的处理总结 前言 上篇文章《Netty 入门指南》主要涵盖了 Netty 的入门知识,包括 Netty 的发展历程、核心功能与组件,并且通过实例演示…...

Maven自定义脚手架(多module模块)+自定义参数

脚手架 视频教程: Maven保姆级教程 脚手架是一个项目模板,包含常用的工程结构、代码。 1 自定义脚手架 脚手架创建的步骤如下,先创建一个工程,把常用的代码写好,进入工程根目录,进行如下操作: …...

爬虫逆向实战(七)--猿人学第十六题

一、数据接口分析 主页地址:猿人学第十六题 1、抓包 通过抓包可以发现数据接口是api/match/16 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以看出m是加密参数 请求头是否加密? 无响应是否加密? 无cook…...

Qt 杂项(Qwt、样式等)

Qt隐藏窗口边框 this->setWindowFlags(Qt::FramelessWindowHint);Qt模态框 this->setWindowModality(Qt::ApplicationModal);QLable隐藏border 代码中设置 lable->setStyleSheet("border:0px");或者UI中直接设置样式:“border:0px” Qwt开源…...

Python程序设计——列表

一、引言 关键点:一个列表可以存储任意大小的数据集合。 程序一般都需要存储大量的数值。假设,举个例子,需要读取100个数字,计算出它们的平均值,然后找出多少个数字是高于这个平均值的。程序首先读取100个数字并计算它…...

NPDP含金量高吗?难考吗?

一,什么是NPDP认证? NPDP认证中文名为产品经理国际资格认证,New Product Development Professional (NPDP) ,是由美国 产品开发与管理协会 (PDMA) 所发起, 是国际公认的唯一的新产品开发专业认证,集理论、方…...

windows pip安装出现 error: Microsoft Visual C++ 14.0 is required

可参考:如何解决 Microsoft Visual C 14.0 or greater is required. Get it with “Microsoft C Build Tools“_不吃香菜的小趴菜的博客-CSDN博客 一、安装Visual Studio2022 1、下载:下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 我这使…...

威胁分析风险评估(TARA)影响和攻击可行性评估参考

在威胁分析风险评估(TARA)过程中,风险等级由对资产安全属性侵害造成后果的影响等级和威胁的可能性两方面综合评估。 备注:以上内容的评估皆是建立在由信息安全问题引起并导致的前提下。 影响等级评估 影响等级说明,影响从安全&a…...

【教程】H5匿名信源码下载一封来信系统安装流程搭建教程

1、下载源码 匿名信2.0:匿名信h5源码 - 万策云盘 提取码:hOC4 2、查看搭建和使用教程 1,准备授权好的域名和服务器还有源码 2,创建网站和数据库,版本选择7.1【不可以选7.2】 3,上传源码并解压,导入数据…...

PyTorch训练简单的生成对抗网络GAN

文章目录 原理代码结果参考 原理 同时训练两个网络:辨别器Discriminator 和 生成器Generator Generator是 造假者,用来生成假数据。 Discriminator 是警察,尽可能的分辨出来哪些是造假的,哪些是真实的数据。 目的:使…...

django实现文件上传

在django中实现文件上传有三种方法可以实现: 自己手动写使用Form组件使用ModelForm组件 其中使用ModelForm组件实现是最简单的。 1、自己手写 先写一个上传的页面 upload_file.html enctype"multipart/form-data 一定要加这个,不然只会上传文件名…...

Java地图专题课 基本API BMapGLLib 地图找房案例 MongoDB

本课程基于百度地图技术,由基础入门开始到应用实战,适合零基础入门学习。将企业项目中地图相关常见应用场景的落地实战,包括有地图找房、轻骑小程序、金运物流等。同时讲了基于Netty实现高性能的web服务,来处理高并发的问题。还讲…...

vue实现可缩放拖拽盒子(亲测可用)

特征 没有依赖 使用可拖动,可调整大小或两者兼备定义用于调整大小的句柄限制大小和移动到父元素或自定义选择器将元素捕捉到自定义网格将拖动限制为垂直或水平轴保持纵横比启用触控功能使用自己的样式为句柄提供自己的样式 安装和基本用法 npm install --save vue-d…...

python一次性导出项目用到的依赖

导出依赖列表 如果你用到了Anaconda,记得先激活环境!!!! 下载pipreqs pip install pipreqs 在项目的根目录新建一个run_pipreqs.py文件,复制一下代码: # -*- coding: utf-8 -*- import os import subprocessos.environ["PYTHONIOE…...

移动端网页中的前端视频技术探索

引言 随着移动设备的普及和网络速度的提升,移动端网页中的视频播放已经成为了越来越重要的功能需求。本篇博客将介绍一些在移动端网页中实现前端视频播放的技术探索,并提供详细的代码示例。 1. 基本视频标签 在移动端网页中实现视频播放最基本的方法就…...

题解:ABC277C - Ladder Takahashi

题解:ABC277C - Ladder Takahashi 题目 链接:Atcoder。 链接:洛谷。 难度 算法难度:普及。 思维难度:入门。 调码难度:入门。 综合评价:简单。 算法 深度优先搜索简单图论 思路 把每…...

7.11 Java方法重写

7.11 Java方法重写 这里首先要确定的是重写跟属性没有关系,重写都是方法的重写,与属性无关 带有关键字Static修饰的方法的重写实例 父类实例 package com.baidu.www.oop.demo05;public class B {public static void test(){System.out.println("这…...

Android Stodio编译JNI项目,Cmake出错:Detecting C compiler ABI info - failed

在使用Android Stodio编译JNI项目时出现Cmake错误,报错如下: Execution failed for task :app:configureCMakeDebug[arm64-v8a]. > [CXX1429] error when building with cmake using C:\Users\Dell\AndroidStudioProjects\MyApplication2\app\src\ma…...

6.2 Spring Boot整合MyBatis

1、基于Spring BootMyBatis的学生信息系统的设计与实现案例 基于Spring BootMyBatis实现学生信息的新增、修改、删除、查询功能,并实现MySQL数据库的操作。 MySQL数据库创建学生表(t_student),有主键、姓名、年龄、性别、出生日…...

在CentOS 7上使用kubeadm部署Kubernetes集群

如有错误,敬请谅解! 此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!! 前言: Kubernetes是一个开源的容器编排平台,用于管理和自动化部署容器化的应用程序。…...

这6个免费设计素材网站,设计师都在用,马住

新手设计师不知道去哪里找素材,那就看看这几个设计师都在用的网站吧,免费、付费、商用素材都有,可根据需求选择,赶紧收藏~ 菜鸟图库 https://www.sucai999.com/?vNTYxMjky 菜鸟图库是一个非常大的素材库,站内包含设…...

uni-app引入sortable列表拖拽,兼容App和H5,拖拽排序。

效果: 拖拽排序 背景: 作为一名前端开发人员,在工作中难免会遇到拖拽功能,分享一个github上一个不错的拖拽js库,能满足我们在项目开发中的需要,下面是我在uniapp中使用SortableJS的使用详细流程; vue开发…...

Redis-内存淘汰算法

Redis可以存多少数据 32位的操作系统默认3G 谁现在用32位啊?我们说64位的 一般来讲是不设上限的 但是我们也可以主动配置maxmemory, maxmemory支持各单位: maxmemory 1024 (默认字节) maxmemory 1024KB maxmemory 1024MB maxmemory 1204GB 当Redis存储超过这个配置值&#…...