🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
UiFigure.hpp
浏览该文件的文档.
1
21
22#pragma once
23
24#include "AstGlobal.h"
25#include "EditFigureDialog.hpp"
26#include <QWidget>
27#include <QMap>
28#include <QList>
29#include <QPointer>
30#include <QScopedPointer>
31
32class QwtFigure;
33class QwtPlot;
34class QwtPlotPanner;
35class QwtPlotCanvasZoomer;
36class QwtPlotSeriesDataPicker;
37class QwtPlotSeriesDataPickerGroup;
38class QToolBar;
39class QToolButton;
40class QActionGroup;
41class QMenu;
42class QwtFigureWidgetOverlay;
43
44namespace matplot
45{
46 class figure_type;
47}
48
49AST_NAMESPACE_BEGIN
50
51class AST_CHART_API UiFigure : public QWidget {
52 Q_OBJECT
53public:
55 explicit UiFigure(matplot::figure_type* pltfigure, QWidget* parent = nullptr);
56
57 ~UiFigure() override;
58 UiFigure(const UiFigure&) = delete;
59 UiFigure& operator=(const UiFigure&) = delete;
60
62 QwtFigure* qwtfigure() const { return qwtfigure_; }
63
65 matplot::figure_type* pltfigure() const { return pltfigure_; }
66
68 QToolBar* toolBar() const { return toolBar_; }
69
71 void setFigureSize(int w, int h);
72
74 QSize sizeHint() const override;
75
77 void refreshOriginalLimits();
78
80 void syncToolbarState();
81
83 void replotAll();
84
86 void restoreNavigationState();
87
89 void restoreEditModeIfNeeded();
90
91public slots:
93 void saveFigure();
94
96 void resetView();
97
99 void setPanMode(bool on);
100
102 void setZoomInMode(bool on);
103
105 void zoomOut();
106
108 void toggleLegend(bool on);
109
111 void toggleGrid(bool on);
112
114 void toggleColorbar(bool on);
115
117 void setEditMode(bool on);
118
120 void openPropertyInspector();
121
122private slots:
124 void onOverlayGeometryChanged(QWidget* w, QRectF oldNorm, QRectF newNorm);
126 void onPickActionToggled(bool on);
127
128private:
129 void setupUi();
130 void createActions();
131 void clearPanners();
132 void clearZoomers();
133 void clearDataPickers();
134 void createDataPickers();
135 void createOverlay();
136 void clearOverlay();
137 QIcon loadIcon(const QString& name) const;
138 QList<QwtPlot*> allAxes() const;
139
140 struct AxisLimits {
141 double xMin = 0, xMax = 0, yMin = 0, yMax = 0;
142 };
143
144 QwtFigure* qwtfigure_ = nullptr;
145 matplot::figure_type* pltfigure_ = nullptr;
146 QToolBar* toolBar_ = nullptr;
147 QAction* panAction_ = nullptr;
148 QAction* zoomInAction_ = nullptr;
149 QAction* legendAction_ = nullptr;
150 QAction* gridAction_ = nullptr;
151 QAction* colorbarAction_ = nullptr;
152 QAction* pickYAction_ = nullptr;
153 QAction* pickNearestAction_ = nullptr;
154 QMenu* dataPickMenu_ = nullptr;
155 QToolButton* dataPickBtn_ = nullptr;
156 QMap<QwtPlot*, AxisLimits> originalLimits_{};
157 QList<QPointer<QwtPlotPanner>> panners_{};
158 QList<QPointer<QwtPlotCanvasZoomer>> zoomers_{};
159 QList<QPointer<QwtPlotSeriesDataPicker>> dataPickers_{};
160 QScopedPointer<QwtPlotSeriesDataPickerGroup> dataPickerGroup_{};
161
162 // 编辑模式
163 QAction* editModeAction_ = nullptr;
164 QScopedPointer<QwtFigureWidgetOverlay> overlay_{};
165
166 // 属性检查器
167 QAction* propertiesAction_ = nullptr;
168 QPointer<EditFigureDialog> propertiesDialog_{};
169};
170
171AST_NAMESPACE_END
Figure 元素属性编辑对话框
定义 UiFigure.hpp:51
QToolBar * toolBar() const
获取工具栏
定义 UiFigure.hpp:68
QwtFigure * qwtfigure() const
获取内部的 QwtFigure
定义 UiFigure.hpp:62
matplot::figure_type * pltfigure() const
获取内部的 matplot::figure_type
定义 UiFigure.hpp:65