#pragma once #include "LAMPMainWidgetAPI.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "QApplicationSettingManager.h" #include "ToolBoxWidget.h" namespace Ui { class RasterMainWidget; } namespace LAMPMainWidget { class RasterMainWidget : public QMainWindow { Q_OBJECT friend class TaskWindow; friend class DownloadTask; public slots: void changeTaskTable(int row, int col, QString text); public: RasterMainWidget(QWidget* parent = nullptr); ~RasterMainWidget() override; protected: void setupWindow(); void setupActions(); void setupStatusBar(); void setupLayers(); void setupTaskWindow(); void initMaps(); void setRightToolbox(); void initToolbox(); void setupShowMessage(); protected: /// 各处处理函数 void panHandle(bool checked); void zoomInHandle(bool checked); void zoomOutHandle(bool checked); void drawlineHandle(bool checked); void sponsorHandle(bool checked); void refreshHandle(bool checked); void selectHandle(bool checked); void zoomChangedHandle(int zoom); void clickedHandle(PointXY pos); void centerChangedHandle(PointXY pos); void leftTopClickedHandle(); void rightBottomClickedHandle(); void createDownloadTask(); void layerChanged(QListWidgetItem* current, QListWidgetItem* previous); private: QWidget* spacerWiget(int width) const; private slots: void on_drawArea_triggered(); void on_addPlaneaction_triggered(); void onactioncloseAllRasterFile_triggered(); private: Ui::RasterMainWidget* mUi; MapCanvas* mMapConvas;//地图容器 QOpenGLWidget* mMapglWidget;// OpenGL窗口 QLineEdit* mScaleText; QLabel* mScaleLabel; QLineEdit* mCenterText; QLabel* mCenterLabel; QLineEdit* mZoomText; QLabel* mZoomLabel; QActionGroup* mMapActionGroup; bool mSetLeftTop; QVector mLayerList; PointXY mLeftTop; PointXY mRightBottom; QDockWidget* toolboxDockWidget; ToolBoxWidget* toolBoxWidget; private: static QHash mMaps; public: QTableWidget* getTaskTable(); }; }