osg嵌入Qt窗体的方式

方式一:继承QOpenGLWidget

核心源码:

.pro文件

QT       += core gui
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets opengl
 
greaterThan(QT_MAJOR_VERSION,5):QT += openglwidgets
 
 
CONFIG += c++17
 
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
SOURCES += \
    form.cpp \
    main.cpp \
    main.cpp \
    graphicswindowqt.cpp
 
HEADERS += \
    form.h \
    graphicswindowqt.h
 
INCLUDEPATH += F:/osgEarth/osgt/osg365/include
DEPENDPATH += F:/osgEarth/osgt/osg365/include
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
 
CONFIG(debug,debug|release){
    LIBS += -LF:\osgEarth\osgt\osg365\lib \
    -lOpenThreadsd \
    -losgd -losgDBd \
    -losgGAd \
    -losgUtild \
    -losgViewerd
 
}else {
    LIBS += -LF:\osgEarth\osgt\osg365\lib \
    -lOpenThreads \
    -losg \
    -losgDB \
    -losgGA \
    -losgUtil \
    -losgViewer \
}

FORMS += \
    form.ui

.h文件

#ifndef GRAPHICSWINDOWQT_H
#define GRAPHICSWINDOWQT_H
 
#include <QOpenGLWidget>
#include <osgViewer/Viewer>
#include <osgViewer/GraphicsWindow>
 
class QInputEvent;
class GraphicsWindowQt : public QOpenGLWidget, public osgViewer::Viewer
{
    Q_OBJECT
 
public:
    GraphicsWindowQt(QWidget *parent = 0);
    ~GraphicsWindowQt();
 
    bool event(QEvent *e);
    void setKeyboardModifiers(QInputEvent *event);
    void keyPressEvent(QKeyEvent *event);
    void keyReleaseEvent(QKeyEvent *event);
    void mousePressEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseDoubleClickEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void wheelEvent(QWheelEvent *event);
    void resizeEvent(QResizeEvent *event);
    void moveEvent(QMoveEvent *event);
    void timerEvent(QTimerEvent *);
 
protected:
    virtual void paintGL();
 
private:
    void init3D();
    osg::ref_ptr<osg::Camera> createCamera(int x,int y,int w,int h);
 
private:
    osg::ref_ptr<osg::Group> root;
    osgViewer::GraphicsWindow *window;
};
 
#endif // GRAPHICSWINDOWQT_H

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌武贰玖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值