QT Qmake 笔记

news2024/11/20 15:17:01

文章目录

  • 概述
  • QT修改样式
  • qmake
    • 概述
    • 库引用和库路径指定
    • QT创建动态库和使用
      • 小例子
        • 写动态库
        • 用动态库
  • 参考资料
  • 附录

概述

需要先安装osg,然后再编译安装osgQOpenGL的插件。
其中,osgQOpenGL是OSG嵌入到qt中的一种实现方式,换言之,能够支持QT的一个osg插件

QT修改样式

styleSheet:

background-image:url("/home/orbbec/Pictures/explore-share-image-1280x720.png")
在这里插入图片描述

qmake

概述

可以通过qmake命令,编译pro文件来生成Makefile。
Makefile保存了编译器和链接器的参数选项,以及所有源文件之间的关系。

具体命令为:

 qmake "CONFIG += AAA BBB CCC" xxx.pro -o Makefile

xxx.pro文件的内容可以是:

CONFIG += staticlib
DEFINES += DDD_FUNC
 
# CONFIG 变量的所有值都可以直接用作条件语句的条件  !!!!!!!
 
AAA {
    DEFINES += AAA_FUNC    # 有这个CONFIG参数,所以会执行这条语句
}
 
DDD {
    DEFINES += DDD_FUNC    # 没这个CONFIG参数,所以不会执行这条语句
}

库引用和库路径指定

  • $$PWD 是项目的当前路径;

  • LIBS += -L "../../lib" -lopencv_world320

    • -L 设置库的路径;
    • -l 指定库的名字
  • 需要指定INCLUDEPATH以及DESTDIR。

QT += widgets
message($$PWD)
INCLUDEPATH += $$PWD/../../include
LIBS += -L ../../lib -lopencv_world320

SOURCES += main.cpp
CONFIG += console
DESTDIR += ../../bin
TARGET = testq # 输出文件名

库链接:
参考链接:https://blog.csdn.net/Marryvivien/article/details/41345281
(注:笔记自用,若侵权则立即删除)
假定目录结构为:
在这里插入图片描述
那么如果想要在main.cpp文件中使用这第三方库的话,就必须要做以下几件事情:
1. 指定头文件路径;
2. 指定库路径;
3. 指定库名字。

具体地,在.pro文件中添加以下语句:

  1. INCLUDEPATH += 3rdparty/CatWhisperer/include
  2. LIBS += -L"3rdparty/CatWhisperer/lib" -lCatWhisperer
    • -L 指定lib路径,-l指定使用的lib名称。注意,不必要指定.lib扩展名。

此外,如果想要指定目标文件夹,那么可以在.pro文件中添加:

DESTDIR = bin
TARGET = testq # 输出文件名

QT创建动态库和使用

  • TEMPLATE = lib
  • 静态库 CONFIG += staticlib

CONFIG()函数。可以用来控制编译不同的版本,debug版本和release版本。如果是debug版本则TARGET = libdll_d, 否则则是libdll. 类似于一个if 判断。

CONFIG(debug,debug|release){
    TARGET = libdll_d
}else{
    TARGET = libdll
}

想要独立构建一个桌面级别的应用,构建动态库和对其进行使用是必备技能。

在QT creator中,新建一个库后,会得到三个文件,文件结构如下图所示:
在这里插入图片描述
其中,vision3d是我自己起的项目名称,而vision3d_global.h头文件中所包含的则是动态库对外接口的宏定义
在这里插入图片描述
此外,vision3d.h则是对外的接口文件,动态库中需要被调用到的接口,都在这个文件中。

小例子

写动态库

通常来说,我们使用的算法都是以库的形式交给开发或其他的人,那么,正常算法工作的编码实际上就是在vision3d.h 以及vision3d.cpp中来实现的。
随便写一个测试函数,进行“构建”(build,或者快捷键 ctrl + B)后,可以在以下路径内,看到.so文件的生成:
在这里插入图片描述
在这里插入图片描述

当然,在windows下,编译的就是dll文件了。

用动态库

随便新建一个控制台项目或者界面项目。
要使用动态库,我们要做的最关键的事情就是,修改pro文件,添加include目录和so文件目录
在这里插入图片描述
参考资料:
https://blog.csdn.net/qq_27278957/article/details/95945638

当然,也可以直接在qpro文件中右键“添加库”,然后添加“外部库”,指定include目录以及库目录即可。

然而,居然存在找不到库的情况,即使将库复制到.o文件同路径也无法找到,在这种情况下,亲测将库的路径加入到LD_LIBRARY_PATH中会可行
在这里插入图片描述参考链接为:https://blog.csdn.net/weixin_45261340/article/details/124967459?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124967459-blog-86527301.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124967459-blog-86527301.pc_relevant_default&utm_relevant_index=2

参考资料

  1. B站视频教程:https://www.bilibili.com/video/BV1ZR4y1w7iy/?spm_id_from=333.788.recommend_more_video.0
  2. csdn-在一个窗口中显示三维模型: https://blog.csdn.net/GeomasterYi/article/details/107132140
  3. QT 打包发布程序
  4. youtube QT&openGL 教程
  5. qmake: https://blog.csdn.net/chenyingboo/article/details/122354902

附录

  1. QT提升为?

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

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

相关文章

【小学信息技术教资面试】《认识鼠标》教案

1.题目:认识鼠标 2.内容: 3.基本要求: (1)掌握鼠标的基本操作 (2)体现学生的主体地位 (3)多种教学方法结合使用 (4)配合板书讲解 《认识鼠标》…

C语言学习之路(高级篇)—— 变量和内存分布(下)

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 程序的内存分区模型 1) 内存分区 1.1 运行之前 我们要想执行我们编写的c程序,那么第一步需要对这个程序进行编译。 预处理&#xf…

linux进程替换(简介)

一:什么是进程替换? 定义: 进程替换,是指用一个新进程来替换此时正执行的进程。新进程从头开始执行自己的代码。 例子: 我们有一个父进程A,在父进程A中有一个子进程B 一般来说,子进程是执行…

Redis的数据复制

介绍 Redis 的复制 Redis 的复制功能分为同步(sync)和命令传播(command propagate)这两个操作 同步操作用于,将从服务器的数据库状态更新至主服务器当前所处的数据库状态;命令传播操作用于,在…

Java基础1112_包机制_JavaDoc生成文档

目录包机制JavaDoc生成文档方法一方法二包机制 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间; 包语句的语法格式为:package pkg1[. pkg2[. pkg3 …]]; 一般利用公司的域名倒置作为包名;com.b…

二进制搭建k8s集群——部署多master

二进制搭建k8s集群——部署多master二进制搭建k8s集群——部署多master部署master02 节点部署负载均衡在lb01、lb02节点上配置nginx和keepalived两台负载均衡器配置keepalived所有node节点修改配置文件在 master01 节点测试创建pod二进制搭建k8s集群——部署多master 架构说明&…

C~回调函数

还是c的学习啊 一、函数指针 在讲回调函数之前,我们需要了解函数指针。 我们都知道,C语言的灵魂是指针,我们经常使用整型指针,字符串指针,结构体指针等 int *p1; char *p2; STRUCT *p3; //STRUCT为我们定义的结构体…

win10下docker安装

业精于勤荒于嬉,总是与偷懒做斗争。 很多年了,一直不愿做事情,不愿意想事情。 1、安装 Docker Toolbox -- Install on Windows | Docker Documentation http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/DockerToolbox-…

今年你们赚到钱了吗?

峥嵘的2022年,各位程序员们,你们赚到钱了吗? 今天是2022年12月21日,眼看就快过年了! 今年你们赚到钱了吗?对于我而言,又是一个"窘迫/囧迫"的穷年,有点心慌慌,有…

windows安装Elasticsearch

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。Elasticsearch是分布式的&#xff…

纷享销客《华东地区新增长专刊》重磅发布

增长,是企业发展永恒的主题。 纷享销客的使命是用创新科技和行业智慧赋能企业增长。在服务超过5000中大型客户的基础上,我们发现,各行各业从营销端到流通端,再到生产端,已然出现了全渠道、全场景、端到端、一体化融合…

【战“疫”案例展】壹点灵心理服务平台——携手抗疫,共克时艰“星光”同行公益项目...

‍网易云信战“疫”案例本项目由网易云信投递并参与“数据猿行业盘点季大型主题策划活动—— #榜样的力量# 《新冠战“疫”——中国数据智能产业最具社会责任感企业》榜单/奖项”评选。‍数据智能产业创新服务媒体——聚焦数智 改变商业自2019年底以来,人们的情绪持…

电脑垃圾站刚清空的文件怎么找回?总结了三种方法

当电脑上删除文件后会临时存放在电脑垃圾站中,如果还需要这些文件,还能有“后悔药”,直接在电脑垃圾站里面找到进行“还原”即可,但是当垃圾站的文件刚被清空了怎么办?如何找回文件呢?下面分享三种方法恢复…

赛狐ERP|假期模式补货建议,解决春节备货难题

马上就到春节假期了,有两个让亚马逊卖家特别头疼的难题: 工厂放假停工 拿不到货 尤其今年不同于往年,各种因素的影响让供应商的放假时间特别早,工厂放假停工以及年后生产排期的不确定性,会导致卖家很长一段时间都无法…

activemq安装windows环境,数据订阅与发布,生产者与消费者

官网下载,选择适合本地jdk编译环境的部署包 安装完成后解压到指定目录,目录不要包含中文,否则可能启动不成功。 解压完成后找到指定路径 双击即可运行 ,见到如下界面启动成功 访问本地管理页面http://127.0.0.1:8161/ 输入账号…

SpringBoot全局异常处理

1、异常处理的种类 我大概把一次请求分成三个阶段,来分别进行全局的异常处理。 在进入Controller之前,譬如请求一个不存在的地址,404错误。在执行RequestMapping时,进入逻辑处理阶段前。譬如传的参数类型错误。以上都正常时&…

升级Win11系统卡在了35%怎么解决?

升级Win11系统卡在了35%怎么解决?Windows11是微软开发的电脑的最新操作系统,不少人都会选择更新到Windows11,但是进行更新安装对很多人来讲并不是一件很简单的事情,不少人都在抱怨安装时常常卡在35%或85%,并且带有一个…

Java.Util复习贴

参加了数次竞赛之后,我发现我的瓶颈所在——语法。于是今天来复习一下常用的Java库函数吧。 比赛中用java8还是10我就不care啦,我直看官方最新文档。地址在 https://docs.oracle.com/javase/10/docs/api/java/util/package-summary.html 首先看到java.…

排序——插入排序、希尔排序

目录 一.插入排序 1.实现 2.时间复杂度 二.希尔排序 2.预排序 (1).单次预排序的实现 (2).相对有序 2.代码 一.插入排序 1.实现 正如其名,是将第n1个数据插入到前面的n的升序(降序)数据中,形成一个n1大小的升序&#xff0…

用于宏观经济数据分析的神经网络(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 宏观经济时间序列的分析和预测是国家决策者非常感兴趣的因素。然而,由于缺乏精确的经济模型和外部因素&#xff08…