🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
UiSolarRadiationPressure.hpp
1#pragma once
2
3#include "AstGlobal.h"
4#include "AstGUI/UiObject.hpp"
5#include "AstGUI/UiDouble.hpp"
6#include "AstGUI/UiQuantity.hpp"
7#include <QVBoxLayout>
8#include <QHBoxLayout>
9#include <QGridLayout>
10#include <QLabel>
11#include <QCheckBox>
12#include <QComboBox>
13#include <QListWidget>
14#include <QPushButton>
15#include <QGroupBox>
16
17AST_NAMESPACE_BEGIN
18
19class SolarRadiationPressure;
20class CelestialBody;
21
22class AST_GUI_API UiSolarRadiationPressure: public UiObject
23{
24 Q_OBJECT
25public:
26 UiSolarRadiationPressure(Object* object, QWidget *parent = nullptr);
27 UiSolarRadiationPressure(QWidget *parent = nullptr);
28 ~UiSolarRadiationPressure() = default;
29
30 SolarRadiationPressure* getSolarRadiationPressure() const;
31 void setSolarRadiationPressure(SolarRadiationPressure* srp);
32 void refreshUi();
33 void apply();
34 void applyTo(SolarRadiationPressure* srp);
35protected:
36 void setupUi();
37 void refreshShadowModel();
38 void refreshSunPosition();
39 void refreshCelestialBodies();
40private slots:
41 void addEclipsingBody();
42 void removeEclipsingBody();
43private:
44 // 布局
45 QVBoxLayout* mainLayout_{nullptr};
46
47 // 模型配置
48 QGroupBox* modelGroup_{nullptr};
49 QGridLayout* modelLayout_{nullptr};
50 QHBoxLayout* typeLayout_{nullptr};
51 QLabel* typeLabel_{nullptr};
52 QComboBox* typeCombo_{nullptr};
53 QHBoxLayout* crLayout_{nullptr};
54 QLabel* crLabel_{nullptr};
55 UiDouble* crEdit_{nullptr};
56 QHBoxLayout* areaMassLayout_{nullptr};
57 QLabel* areaMassLabel_{nullptr};
58 UiQuantity* areaMassEdit_{nullptr};
59
60 // 阴影模型
61 QGroupBox* shadowGroup_{nullptr};
62 QGridLayout* shadowLayout_{nullptr};
63 QHBoxLayout* shadowModelLayout_{nullptr};
64 QLabel* shadowModelLabel_{nullptr};
65 QComboBox* shadowModelCombo_{nullptr};
66 QHBoxLayout* boundaryMitigationLayout_{nullptr};
67 QCheckBox* boundaryMitigationCheck_{nullptr};
68 QHBoxLayout* sunPositionLayout_{nullptr};
69 QLabel* sunPositionLabel_{nullptr};
70 QComboBox* sunPositionCombo_{nullptr};
71 QHBoxLayout* atmAltLayout_{nullptr};
72 QLabel* atmAltLabel_{nullptr};
73 UiQuantity* atmAltEdit_{nullptr};
74
75 // 遮挡天体
76 QGroupBox* eclipsingGroup_{nullptr};
77 QHBoxLayout* eclipsingLayout_{nullptr};
78 QVBoxLayout* availableLayout_{nullptr};
79 QLabel* availableLabel_{nullptr};
80 QListWidget* availableList_{nullptr};
81 QVBoxLayout* buttonsLayout_{nullptr};
82 QPushButton* addButton_{nullptr};
83 QPushButton* removeButton_{nullptr};
84 QVBoxLayout* assignedLayout_{nullptr};
85 QLabel* assignedLabel_{nullptr};
86 QListWidget* assignedList_{nullptr};
87
88
89};
90
91AST_NAMESPACE_END
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:86
太阳辐射压力
定义 SolarRadiationPressure.hpp:47
双精度浮点数输入框
定义 UiDouble.hpp:36
与对象关联的 QWidget
定义 UiObject.hpp:36
数量输入框
定义 UiQuantity.hpp:41
定义 UiSolarRadiationPressure.hpp:23