🛰️航天仿真算法库 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;
60
62 QString createdObjectName() const;
63
64signals:
67
68private:
69 void setupUi();
70 void buildTypeGrid();
71 void onTypeCardClicked(int entryIndex);
72 void onChooseParent();
73 void onAdvanced();
74 void onCreate();
75 bool tryCreate();
76 bool eventFilter(QObject* obj, QEvent* event) override;
77 QString generateUniqueName(const QString& typeName) const;
78
80 Object* showParentDialog(const char* parentType);
82 void populateParentTree(QTreeWidget* tree, QTreeWidgetItem* parentItem,
83 Object* obj, const char* parentType);
84
86 static std::vector<QuickTypeEntry> quickTypes();
87
88 // 类型表格
89 QTableWidget* typeTable_ = nullptr;
90 QLabel* typeDescLabel_ = nullptr;
91
92 // 父对象选择
93 QWidget* parentRow_ = nullptr;
94 QLineEdit* parentEdit_ = nullptr;
95
96 // 名称 / 按钮
97 QLineEdit* nameEdit_ = nullptr;
98 QPushButton* createBtn_ = nullptr;
99 QPushButton* advancedBtn_ = nullptr;
100
101 // 状态
102 int selectedEntry_ = -1;
103 Object* selectedParent_ = nullptr;
104 QString createdObjectName_;
105};
106
107AST_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