Qt窗体嵌入OpenSceneGraph

本文介绍了解决osgviewerQt与Qt集成时遇到的问题,包括如何正确配置CMakeLists.txt文件,调整代码以适应Qt环境,并给出了具体的pro文件配置示例。

把osgviewerQt拷贝到applications里面,然后修改CMakeLists.txt文件,

然后再添加ADD_SUBDIRECTORY(osgviewerQt),这样编译出了很多问题,查看了其他博客的做法,说是要配置cmake中需要的QT路径,但是依然报错,只能先放着以后解决了。

我重新编译osg,然后新建一个Qt项目,把osgviewerQt里面的代码照搬过来,运行成功了,只出了点小问题,把 QCoreApplication换成QApplication app(argc, argv)。

https://blog.youkuaiyun.com/qq_34861102/article/details/80787333

https://www.cnblogs.com/xingzhensun/p/6251635.html

https://stackoverflow.com/questions/5521752/qt-qwidget-cannot-create-a-qwidget-when-no-gui-is-being-used

 

pro文件内容:

QT += core
QT -= gui
QT += opengl

CONFIG += c++11 console
CONFIG -= app_bundle

SOURCES += \
        main.cpp
LIBS+= -L/usr/local/lib64/ -losgQt
LIBS+= -L/usr/local/lib64/ -losgViewer
LIBS+= -L/usr/local/lib64/ -losgGA
LIBS+= -L/usr/local/lib64/ -losg
LIBS+= -L/usr/local/lib64/ -losgDB

 

### 集成和使用OpenSceneGraph库于Qt项目 #### 创建Qt项目支持OpenSceneGraph 为了使Qt应用程序能够集成并使用OpenSceneGraph (OSG),需先创建一个新的Qt Widgets Application项目。之后,在`.pro`文件中加入必要的配置来链接OSG及其依赖项[^1]。 ```qmake QT += core gui widgets opengl CONFIG += c++11 LIBS += -L/usr/local/lib/osg -losg -losgDB -losgGA -losgViewer -losgText \ -lOpenThreads -lopenthreads -l osgQt INCLUDEPATH += /usr/local/include/osg /usr/local/include/osgQt DEPENDPATH += . ``` 这段QMake脚本指定了编译器应查找哪些路径下的头文件(`INCLUDEPATH`),同时也告知链接器要使用的静态或共享库的位置及名称(`LIBS`)。 #### 实现线程安全的Qt-OSG交互组件 对于希望实现更复杂应用的需求,可以考虑采用专门设计用于解决这一问题的概念验证部件——QtOSG。此部件允许开发者在一个独立的工作线程里运行OSG渲染循环的同时保持UI响应灵敏度;通过信号槽机制处理来自不同线程的数据交换操作。 下面是一个简单的例子展示如何初始化此类窗口: ```cpp #include "qtosg.h" // ...其他包含语句... int main(int argc, char *argv[]) { QApplication app(argc, argv); // 初始化Qt OSG Widget实例 QtOSGWidget* qtOsgWidget = new QtOSGWidget(); // 设置场景图和其他参数... QMainWindow mainWindow; mainWindow.setCentralWidget(qtOsgWidget); mainWindow.show(); return app.exec(); } ``` 上述代码片段展示了怎样设置一个基本的应用程序框架,并将自定义的小部件作为主窗口的核心部分显示出来。这使得用户界面可以直接嵌入由OSG负责绘制的内容区域之中[^2]。 #### 关键类与函数说明 - `QtOSGWidget`: 继承自QWidget的一个特殊控件,内部封装了一个专用OpenGL上下文环境供OSG调用绘图命令。 - 构造函数接受多个可选参数用来定制行为模式(比如是否启用多线程更新)、指定初始视角位置等特性。 - 提供给外部访问的方法有:加载3D模型资源、调整相机角度、控制动画播放状态等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值