#pragma once #include #include #include "osgqt/GraphicsWindowQt.h" class OEScene; class OsgWidget : public QWidget, public osgViewer::CompositeViewer { Q_OBJECT public: OsgWidget(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); ~OsgWidget() override; void Initialize(void); void Uninitialize(void); void LoadDefaultScene(void); void OnLoadDyt(const QString& path); signals: void signalResetWorkSpace(); void signalScaleInfo(const QString&); protected: osgQt::GraphicsWindowQt* createGraphicsWindow( int x, int y, int w, int h, const std::string& name="", bool windowDecoration=false ); QWidget* addViewWidget( osgQt::GraphicsWindowQt* gw); void resizeEvent(QResizeEvent* event) override; void paintEvent( QPaintEvent* /*event*/ ) override; // 拖拽事件处理 void dragEnterEvent(QDragEnterEvent* event) override; void dragMoveEvent(QDragMoveEvent* event) override; void dropEvent(QDropEvent* event) override; public slots: /** * @brief 处理预制模型拖拽 * @param modelType 模型类型 * @param modelName 模型名称 * @param position 屏幕位置(可选) */ void OnPresetModelDropped(const QString& modelType, const QString& modelName, const QPointF& position = QPointF()); private: QTimer timer_; osg::ref_ptr activeScene_; osg::ref_ptr viewUI_; class WorkSpace* workspace_{ nullptr }; osg::ref_ptr view_; // class OsgView* view_{nullptr}; };