文章目录
- 概述
- 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文件中添加以下语句:
- INCLUDEPATH += 3rdparty/CatWhisperer/include
- 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
参考资料
- B站视频教程:https://www.bilibili.com/video/BV1ZR4y1w7iy/?spm_id_from=333.788.recommend_more_video.0
- csdn-在一个窗口中显示三维模型: https://blog.csdn.net/GeomasterYi/article/details/107132140
- QT 打包发布程序
- youtube QT&openGL 教程
- qmake: https://blog.csdn.net/chenyingboo/article/details/122354902
附录
- QT提升为?