|
|
|
|
#ifndef MAINWINDOW_H
|
|
|
|
|
#define MAINWINDOW_H
|
|
|
|
|
|
|
|
|
|
//MSVC编译器界面显示乱码问题
|
|
|
|
|
#if _MSC_VER >= 1600
|
|
|
|
|
#pragma execution_character_set("utf-8")
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#include <QMainWindow>
|
|
|
|
|
#include <QStackedWidget>
|
|
|
|
|
#include <QProgressDialog>
|
|
|
|
|
#include <QString>
|
|
|
|
|
#include <QMutex>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//子窗口头文件
|
|
|
|
|
#include "saveroutedialog.h"
|
|
|
|
|
#include "bindroutedialog.h"
|
|
|
|
|
#include "computeoffsetpositiondialog.h"
|
|
|
|
|
|
|
|
|
|
//supermap
|
|
|
|
|
#include <Workspace/UGWorkspace.h>
|
|
|
|
|
#include <Engine/UGDataset.h>
|
|
|
|
|
#include "Map/UGLayer.h"
|
|
|
|
|
#include "scenecontrol.h"
|
|
|
|
|
#include "sceneview.h"
|
|
|
|
|
|
|
|
|
|
namespace UGC
|
|
|
|
|
{
|
|
|
|
|
class UGWorkspace;
|
|
|
|
|
class UGImage;
|
|
|
|
|
class UGGraphics;
|
|
|
|
|
class UGDataset;
|
|
|
|
|
class UGDataSource;
|
|
|
|
|
class UGLayer;
|
|
|
|
|
class UGMap;
|
|
|
|
|
class UGDatasetVector;
|
|
|
|
|
// class UGMapEditorWnd;
|
|
|
|
|
}
|
|
|
|
|
using namespace UGC;
|
|
|
|
|
|
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
namespace Ui { class MainWindow; }
|
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
|
|
|
|
|
|
class QMapControl; //声明所依赖的QMapControl类
|
|
|
|
|
|
|
|
|
|
class MainWindow : public QMainWindow
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
enum RBtnMenuType
|
|
|
|
|
{
|
|
|
|
|
DefaultMenu,
|
|
|
|
|
AttributeMenu,
|
|
|
|
|
EditMenu
|
|
|
|
|
};
|
|
|
|
|
Q_ENUM(RBtnMenuType);
|
|
|
|
|
|
|
|
|
|
enum MapType
|
|
|
|
|
{
|
|
|
|
|
Map2D,
|
|
|
|
|
Map3D,
|
|
|
|
|
};
|
|
|
|
|
Q_ENUM(MapType);
|
|
|
|
|
|
|
|
|
|
MainWindow(QWidget *parent = nullptr);
|
|
|
|
|
~MainWindow();
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
void setupUI(QMainWindow* mainWindow);//声明搭建界面的函数
|
|
|
|
|
|
|
|
|
|
void initWorkSpace();//工作空间初始化
|
|
|
|
|
|
|
|
|
|
void initMapControl(); //二维地图容器初始化
|
|
|
|
|
|
|
|
|
|
void initMenu(QMainWindow* mainWindow); //Map菜单初始化
|
|
|
|
|
|
|
|
|
|
void addMapAction(QMainWindow *mainWindow);//声明界面上各元素的行为函数
|
|
|
|
|
|
|
|
|
|
void addMapMenuAction();//声明Map右键菜单的行为函数
|
|
|
|
|
|
|
|
|
|
void addMapConnect();//声明Map连接信号和槽的函数
|
|
|
|
|
|
|
|
|
|
void initSceneControl(QWidget* parent); //三维场景容器初始化
|
|
|
|
|
|
|
|
|
|
void initSceneMene(); //场景菜单初始化
|
|
|
|
|
|
|
|
|
|
void addSceneMenuAction();//声明Scene右键菜单的行为函数
|
|
|
|
|
|
|
|
|
|
void addSceneActionConnect(); //声明Scene QAction连接信号和槽的函数
|
|
|
|
|
|
|
|
|
|
void addSceneConnect();//声明Scene连接信号和槽的函数
|
|
|
|
|
|
|
|
|
|
UGbool DirExist(QString fullPath); //判断文件夹是否存在
|
|
|
|
|
|
|
|
|
|
void importKMLData(); //导入KML
|
|
|
|
|
|
|
|
|
|
//加载模型文件
|
|
|
|
|
void loadModelData();
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
// 如果窗口设置了 Qt::DefaultContextMenu 策略,
|
|
|
|
|
// 点击鼠标右键该函数被Qt框架调用
|
|
|
|
|
void contextMenuEvent(QContextMenuEvent *event);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
Ui::MainWindow *ui;
|
|
|
|
|
QStackedWidget* stackedWidget;
|
|
|
|
|
QProgressDialog* progressDlg;
|
|
|
|
|
|
|
|
|
|
RBtnMenuType rMenuType;
|
|
|
|
|
MapType mapType;
|
|
|
|
|
|
|
|
|
|
ComputeOffsetPositionDialog* inputPosDlg;
|
|
|
|
|
saveRouteDialog *saveRouteDlg;
|
|
|
|
|
bindRouteDialog *bindRouteDlg;
|
|
|
|
|
|
|
|
|
|
QMapControl* qMapControl;//声明一个地图窗口对象,QMapControl类对象
|
|
|
|
|
|
|
|
|
|
SceneControl* pSceneControl; //三维场景对象
|
|
|
|
|
SceneView* pSceneView;
|
|
|
|
|
|
|
|
|
|
UGWorkspace* m_pWorkspace; //声明一个工作空间对象
|
|
|
|
|
|
|
|
|
|
QMenu* mapRBtnMenu;//声明一个地图右键菜单对象
|
|
|
|
|
//声明右键菜单各按钮对象
|
|
|
|
|
QAction* actionShowRoute; //显示航线
|
|
|
|
|
QAction* actionBindRoute;//装订航线
|
|
|
|
|
QAction* actionImportRoute; //导入航线
|
|
|
|
|
|
|
|
|
|
QMenu* attributeRBtnMenu; //声明属性右键菜单对象
|
|
|
|
|
QAction* actionAttribute; //属性
|
|
|
|
|
QAction* actionExportFile; //文件导出
|
|
|
|
|
|
|
|
|
|
QMenu* EditRBtnMenu; //编辑右键菜单
|
|
|
|
|
QAction* saveRoute;//保存航线
|
|
|
|
|
QAction* cancelRoute;//取消航线
|
|
|
|
|
|
|
|
|
|
/*******************场景菜单对象*******************/
|
|
|
|
|
QMenu* sceneRBtnMenu;//声明一个场景右键菜单对象
|
|
|
|
|
//声明场景右键菜单各按钮对象
|
|
|
|
|
QAction* actionSceneShowRoute; //显示航线
|
|
|
|
|
QAction* actionSceneBindRoute;//装订航线
|
|
|
|
|
QAction* actionSceneImportRoute; //导入航线
|
|
|
|
|
|
|
|
|
|
//声明界面上工具条对象
|
|
|
|
|
QToolBar *mainToolBar;
|
|
|
|
|
|
|
|
|
|
//声明工具条上各个按钮对象
|
|
|
|
|
QAction *actionOpen;
|
|
|
|
|
|
|
|
|
|
QAction *actionZoomout;
|
|
|
|
|
|
|
|
|
|
QAction *actionZoomin;
|
|
|
|
|
|
|
|
|
|
QAction *actionPan;
|
|
|
|
|
|
|
|
|
|
QAction *actionViewEntire;
|
|
|
|
|
|
|
|
|
|
QAction *actionCalcLength;
|
|
|
|
|
|
|
|
|
|
QAction *actionCalcArea;
|
|
|
|
|
|
|
|
|
|
QAction *actionCalcAngle;
|
|
|
|
|
|
|
|
|
|
QAction *actionSelect;
|
|
|
|
|
|
|
|
|
|
QAction *actionDrawPoint;
|
|
|
|
|
|
|
|
|
|
QAction *actionDrawLine;
|
|
|
|
|
|
|
|
|
|
QAction *actionDrawPolygon;
|
|
|
|
|
|
|
|
|
|
QAction *actionInputPoint;
|
|
|
|
|
|
|
|
|
|
QAction *actionOnlineMap;
|
|
|
|
|
|
|
|
|
|
QAction *actionMapLocation;
|
|
|
|
|
|
|
|
|
|
QAction *actionTransformMap;
|
|
|
|
|
|
|
|
|
|
QAction *actionImportData;
|
|
|
|
|
|
|
|
|
|
//绘制模式
|
|
|
|
|
qint16 drawMode;
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// QStringList imageDataList;
|
|
|
|
|
// QStringList terrainDataList;
|
|
|
|
|
// int imageDataCount;
|
|
|
|
|
// int terrainDataCount;
|
|
|
|
|
|
|
|
|
|
QMutex m_mutex;
|
|
|
|
|
|
|
|
|
|
// QThread* loadSceneDataThread;
|
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
void sendAddRouteState(int addState);// 航线是否添加成功信号
|
|
|
|
|
|
|
|
|
|
void sendSceneDataList(SceneControl* pSceneControl,UGDataSource* pDataSource,QStringList imagePathList,QStringList terrianPathList);
|
|
|
|
|
|
|
|
|
|
// void closedProgressDialog();
|
|
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
|
void openRasterMap(); //声明槽函数openRasterMap(打开地图操作)
|
|
|
|
|
|
|
|
|
|
void zoomIn();//声明槽函数zoomIn(放大地图操作)
|
|
|
|
|
|
|
|
|
|
void zoomOut();//声明槽函数zoomOut(缩小地图操作)
|
|
|
|
|
|
|
|
|
|
void viewEntire();//声明槽函数viewEntire(全幅显示地图)
|
|
|
|
|
|
|
|
|
|
void pan();//声明槽函数pan(平移浏览地图)
|
|
|
|
|
|
|
|
|
|
void calcLength();//声明槽函数calcLength(量算距离)
|
|
|
|
|
|
|
|
|
|
void calcArea();//声明槽函数calcArea(量算面积)
|
|
|
|
|
|
|
|
|
|
void calcAngle();//声明槽函数calcAngle(量算角度)
|
|
|
|
|
|
|
|
|
|
void Select(); //声明槽函数Select
|
|
|
|
|
|
|
|
|
|
void drawPoint();//声明槽函数drawPoint(绘制点)
|
|
|
|
|
|
|
|
|
|
void drawLine();//声明槽函数drawLine(绘制线)
|
|
|
|
|
|
|
|
|
|
void drawPolygon();//声明槽函数drawPolygon(绘制多边形)
|
|
|
|
|
|
|
|
|
|
void showBindRouteDialog(); //显示航线装订弹窗
|
|
|
|
|
|
|
|
|
|
void showComputeOffsetPosition(); //显示坐标点输入坐标弹窗
|
|
|
|
|
|
|
|
|
|
void showOnlineMapDialog(); //显示在线地图选择弹窗
|
|
|
|
|
|
|
|
|
|
void showAttributeMenu(); //显示属性右键菜单
|
|
|
|
|
|
|
|
|
|
void transformMap(); //二三维地图切换
|
|
|
|
|
|
|
|
|
|
void importSceneData(QStringList imagePathList,QStringList terrianPathList); //导入场景数据
|
|
|
|
|
|
|
|
|
|
void closedProgressDialog(QString taskName); //关闭进度条
|
|
|
|
|
|
|
|
|
|
void showSettingFlightPoint3DDialog(); //显示航高设置对话框
|
|
|
|
|
|
|
|
|
|
void showSaveRoute3DDialog(UGGeometry* pGeometry); //显示三维航线保存对话框
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
#endif // MAINWINDOW_H
|