QT Qmake OpenGL osg笔记

news2025/1/20 19:15:29

文章目录

  • 概述
  • 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/105916.html

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

相关文章

AMBA、AHB、APB、AXI总线介绍及对比

link 一、AMBA概述AMBA (Advanced Microcontroller Bus Architecture) 高级微处理器总线架构定义了高性能嵌入式微控制器的通信标准,可以将RISC处理器(精简指令集处理器)集成在其他IP芯核和外设中,它是有效连接IP核的“数字胶”&a…

或许是市面上最强的 Mock 工具

背景 在开发过程中,由于后端与前端并行开发,或者前端需要等待后台开发,难以保证对接效率,同时即使用开发好的 API 对接,也有可能一个 API 不通就阻塞了整个软件的对接工作。同时对软件的敏感度也很高,一不…

冯·诺依曼:计算机硬件与软件Computer

计算机硬件与软件 计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备 冯诺依曼体系结构: …

cubeIDE开发, STM32移植GuiLite图形库开发要点

一、GuiLite GuiLite图形库,仅4千行C代码,0依赖,单一头文件库(GuiLite.h)的跨平台开源GUI库,支持支持的操作系统有iOS/macOS/WatchOS,Android,Linux(ARM/x86-64&a…

Filter过滤器 | 过滤器的使用以及实现原理、责任链设计模式改造oa项目

目录 一:过滤器的使用以及实现原理 (1)当前的oa项目还存在什么缺陷? (2)Filter是什么,有什么用,执行原理是什么? (3)过滤器怎么写&#xff1f…

蓝桥杯:作物杂交 (DFS)

目录 题目描述 输入描述 输出描述 输入输出样例 输入 输出 样例说明 思路(DFS): AC代码(Java): 题目链接 题目描述 作物杂交是作物栽培中重要的一步。已知有 N种作物 (编号 1 至 N ),第…

[第十二届蓝桥杯/java/算法]B——空间

🧑‍🎓个人介绍:大二软件生,现学JAVA、Linux、MySQL、算法 💻博客主页:渡过晚枫渡过晚枫 👓系列专栏:[编程神域 C语言],[java/初学者],[蓝桥杯] &#x1f4d6…

python爬虫技术如何挣钱?教你爬虫月入三万!

前言 爬虫技术挣钱方法1:接外包爬虫项目 这是网络爬虫最通常的的挣钱方式,通过外包网站,熟人关系接一个个中小规模的爬虫项目,一般向甲方提供数据抓取,数据结构化,数据清洗等服务。 各位新入行的猿人看官大多都会先尝…

SpringBoot中的Aop用法

目录什么是AopAop概述相关注解相关概念实例1PointCut 表达式详解executionwithinthistargetargs:annotation:args:逻辑运算符实例2环绕通知什么是Aop 主要介绍springboot中aop的使用,用过Spring框架的都知道,aop是spring框架的两大核心功能之一&#xf…

「实操」适配 NebulaGraph 新版本与压测实践

本文来自邦盛科技-知识图谱团队-繁凡,本文以 NebulaGraph v3.1.0 为例。 前言 NebulaGraph v3.1 版本已经发布有一段时间了,但是我们的项目之前是基于 v2.6.1 版本开发的,由于一直在做功能相关的工作,所以一直没有对图库进行升级…

一个简单的步骤让你的 Python 代码更干净

说起来容易做起来难,我们都知道代码可读性非常重要,但是写的时候总是随心所欲,不考虑类型提示、import 排序、PEP8 规范。今天分享一个小技巧,通过一个简单的步骤就可以让你的 Python 代码更干净。 这就是 pre-commit&#xff1a…

pyQt5和pySide2 环境配置以及部分问题解决方案

首先介绍需要安装的内容: 1、Qt 2、python3.7.5(查找资料过程中有注意到说是3.8及3.8以上版本Qt可能不兼容)【记得勾选添加到环境变量中选项】 3、pip(主要用来下载使用) 4、pySide2、PyQt5、pyqt5-tools 5、如果有使…

vue 前端国际化方案

方案介绍: 1.使用i18n(使用步骤可百度,要注意版本问题) 2.整合ele-ui的国际化方案(百度,几行添加一下即可) 3.数据信息的配置(重头戏,以下详细介绍)excel转j…

中科院高分区盘点:1区新刊,影响因子即将突破7分(含IEEE)

高分新刊——计算机领域 1区人工智能类SCI&EI 【出版社】IEEE 【自引率】4.30%(低) 【国人占比】13.40% 【期刊简介】IF:6.5-7.0,JCR1区,中科院3区 【检索情况】SCI&EI 双检,正刊 【参考周期】3-5个月左…

Hierarchical Fusion Model (2019 ACL)三种模态的层次融合

论文题目(Title):Multi-Modal Sarcasm Detection in Twitter with Hierarchical Fusion Model 研究问题(Question):主要研究了推特中由文本和图像组成的推文的多模态讽刺检测 研究动机(Motiva…

二肽Phe-Pro,7669-65-0,FP

Substrate for skin fibroblast prolidase.皮肤成纤维细胞prolida酶的底物。 编号: 131185中文名称: 二肽Phe-Pro英文名: Phe-ProCAS号: 7669-65-0单字母: H2N-FP-OH三字母: H2N-Phe-Pro-COOH氨基酸个数: 2分子式: C14H18N2O3平均分子量: 262.3精确分子量: 262.13等电点(PI): 6…

【学习笔记02】vue指令学习

目录 一、常用的指令 (一)v-bind 1、绑定样式 2、$event (二)v-on 1、v-on修饰符 2、按键修饰符 3、案例:Todolist (三)v-model 1、 v-model和v-bind的区别 2、案例:数…

wy的leetcode刷题记录_Day60

wy的leetcode刷题记录_Day60 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间:2022-12-21 前言 这几天身体不舒服,现在重新开始更新。 目录wy的leetcode刷题记录_Day60声明前言1753. 移除石子的最大得分题目介绍思路代码收获…

Java 异常(Exceptions)

目录 1、什么是异常? 2、捕获并处理异常 try-with-resources 语句 3、通过方法抛出异常 自定义异常 1、什么是异常? 定义:异常是在程序执行过程中发生的一种事件,它会中断程序指令的正常流程。 当方法中发生错误时&#xff0…

2022年我国止血药行业市场规模不断增长 激活凝血因子活性药是主流产品

根据观研报告网发布的《中国止血药市场现状深度研究与发展前景分析报告(2022-2029年)》显示,止血药主要是指凡能够制止体内外出血的药物,主要适用于各部位出血病症,如咯血、衄血、吐血、尿血、便血、崩漏、紫癜及创伤出…