🛰️航天仿真算法库 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;
30 UiSolarRadiationPressure& operator=(const UiSolarRadiationPressure&) = delete;
31
32 SolarRadiationPressure* getSolarRadiationPressure() const;
33 void setSolarRadiationPressure(SolarRadiationPressure* srp);
34 void refreshUi();
35 void apply();
36 void applyTo(SolarRadiationPressure* srp);
37protected:
38 void setupUi();
39 void refreshShadowModel();
40 void refreshSunPosition();
41 void refreshCelestialBodies();
42private slots:
43 void addEclipsingBody();
44 void removeEclipsingBody();
45private:
46 // 布局
47 QVBoxLayout* mainLayout_{nullptr};
48
49 // 模型配置
50 QGroupBox* modelGroup_{nullptr};
51 QGridLayout* modelLayout_{nullptr};
52 QHBoxLayout* typeLayout_{nullptr};
53 QLabel* typeLabel_{nullptr};
54 QComboBox* typeCombo_{nullptr};
55 QHBoxLayout* crLayout_{nullptr};
56 QLabel* crLabel_{nullptr};
57 UiDouble* crEdit_{nullptr};
58 QHBoxLayout* areaMassLayout_{nullptr};
59 QLabel* areaMassLabel_{nullptr};
60 UiQuantity* areaMassEdit_{nullptr};
61
62 // 阴影模型
63 QGroupBox* shadowGroup_{nullptr};
64 QGridLayout* shadowLayout_{nullptr};
65 QHBoxLayout* shadowModelLayout_{nullptr};
66 QLabel* shadowModelLabel_{nullptr};
67 QComboBox* shadowModelCombo_{nullptr};
68 QHBoxLayout* boundaryMitigationLayout_{nullptr};
69 QCheckBox* boundaryMitigationCheck_{nullptr};
70 QHBoxLayout* sunPositionLayout_{nullptr};
71 QLabel* sunPositionLabel_{nullptr};
72 QComboBox* sunPositionCombo_{nullptr};
73 QHBoxLayout* atmAltLayout_{nullptr};
74 QLabel* atmAltLabel_{nullptr};
75 UiQuantity* atmAltEdit_{nullptr};
76
77 // 遮挡天体
78 QGroupBox* eclipsingGroup_{nullptr};
79 QHBoxLayout* eclipsingLayout_{nullptr};
80 QVBoxLayout* availableLayout_{nullptr};
81 QLabel* availableLabel_{nullptr};
82 QListWidget* availableList_{nullptr};
83 QVBoxLayout* buttonsLayout_{nullptr};
84 QPushButton* addButton_{nullptr};
85 QPushButton* removeButton_{nullptr};
86 QVBoxLayout* assignedLayout_{nullptr};
87 QLabel* assignedLabel_{nullptr};
88 QListWidget* assignedList_{nullptr};
89
90
91};
92
93AST_NAMESPACE_END
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:95
太阳辐射压力
定义 SolarRadiationPressure.hpp:47
双精度浮点数输入框
定义 UiDouble.hpp:36
与对象关联的 QWidget
定义 UiObject.hpp:36
数量输入框
定义 UiQuantity.hpp:41
定义 UiSolarRadiationPressure.hpp:23