🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
UiNewObjectQuickDialog.hpp
浏览该文件的文档.
1
22
23#pragma once
24
25#include "AstGlobal.h"
26#include <QDialog>
27#include <QString>
28#include <vector>
29
30class QEvent;
31class QLabel;
32class QLineEdit;
33class QPushButton;
34class QTableWidget;
35class QTreeWidget;
36class QTreeWidgetItem;
37
38AST_NAMESPACE_BEGIN
39
40class Object;
41
44{
45 const char* typeName;
46 const char* category;
47 const char* parentType;
48};
49
53class AST_GUI_API UiNewObjectQuickDialog : public QDialog
54{
55 Q_OBJECT
56
57public:
58 explicit UiNewObjectQuickDialog(QWidget* parent = nullptr);
59 ~UiNewObjectQuickDialog() override;
61 UiNewObjectQuickDialog& operator=(const UiNewObjectQuickDialog&) = delete;
62
64 QString createdObjectName() const;
65
66signals:
69
70private:
71 void setupUi();
72 void buildTypeGrid();
73 void onTypeCardClicked(int entryIndex);
74 void onChooseParent();
75 void onAdvanced();
76 void onCreate();
77 bool tryCreate();
78 bool eventFilter(QObject* obj, QEvent* event) override;
79 QString generateUniqueName(const QString& typeName) const;
80
82 Object* showParentDialog(const char* parentType);
84 void populateParentTree(QTreeWidget* tree, QTreeWidgetItem* parentItem,
85 Object* obj, const char* parentType);
86
88 static std::vector<QuickTypeEntry> quickTypes();
89
90 // 类型表格
91 QTableWidget* typeTable_ = nullptr;
92 QLabel* typeDescLabel_ = nullptr;
93
94 // 父对象选择
95 QWidget* parentRow_ = nullptr;
96 QLineEdit* parentEdit_ = nullptr;
97
98 // 名称 / 按钮
99 QLineEdit* nameEdit_ = nullptr;
100 QPushButton* createBtn_ = nullptr;
101 QPushButton* advancedBtn_ = nullptr;
102
103 // 状态
104 int selectedEntry_ = -1;
105 Object* selectedParent_ = nullptr;
106 QString createdObjectName_{};
107};
108
109AST_NAMESPACE_END
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:95
快速新建对象对话框
定义 UiNewObjectQuickDialog.hpp:54
void objectCreated()
对象创建成功后发出,外部可据此刷新对象树
快速创建类型条目配置
定义 UiNewObjectQuickDialog.hpp:44
const char * category
分类标签(用于分组标题)
定义 UiNewObjectQuickDialog.hpp:46
const char * typeName
RTTI 类型名(用于创建)
定义 UiNewObjectQuickDialog.hpp:45
const char * parentType
需要的父对象类型名,nullptr 表示无需父对象
定义 UiNewObjectQuickDialog.hpp:47