You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
1.9 KiB
C++

#ifndef SCENEVIEW_H
#define SCENEVIEW_H
#include <QWidget>
#include <QPainter>
#include <QWheelEvent>
#include <QApplication>
#include <QDesktopWidget>
#include <QScreen>
#include <QTimer>
#include <QDebug>
#include "sceneControl.h"
#include "SceneLayersView.h"
//using namespace SuperMap;
class SceneView : public QWidget
{
Q_OBJECT
public:
explicit SceneView(QWidget *parent = nullptr);
virtual ~SceneView();
public:
bool showSettingFlightPoint;
bool startTrackingFlag; //开始绘制追踪
bool isEditStateFlag; //编辑状态
/*
*@cbwu
*@brief 存储显示的几何对象集合
*/
// QMap<int,QString>m_qmapDisplayGeometryID;
//method
private:
unsigned int getMouseOrKeyFlag(QMouseEvent* event);
void ReviseCursor(int SceneUserAction); //设置鼠标光标形状
// override parent
protected:
virtual void paintEvent(QPaintEvent* event);
virtual void wheelEvent(QWheelEvent* event);
virtual void mousePressEvent(QMouseEvent* event);
virtual void mouseReleaseEvent(QMouseEvent* event);
virtual void mouseMoveEvent(QMouseEvent* event);
virtual void resizeEvent(QResizeEvent* event);
virtual void keyPressEvent(QKeyEvent* event);
virtual void mouseDoubleClickEvent(QMouseEvent *event);
private:
SceneControl* m_pSceneControl;
bool isRenderTimerStarted;
QTimer* renderTimer; // 场景渲染定时器
// SceneLayersView* pSceneLayersView;
public:
SceneControl* GetSceneControl();
void startRender(int ms = 30);
void stopRender();
// SceneLayersView* getSceneLayersView();
signals:
void sendTrackedGeometry(UGGeometry* pGeometry); //发送绘制完的3D几何对象信号
void sendTrackingGeometry(UGGeometry* pGeometry);
void showSettingFlightPointDialg(); //显示航点信息信号
void showAttributeMenu(); //显示右键属性菜单
public slots:
void RenderInTimer();
};
#endif // SCENEVIEW_H