🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
UiExpressionBrowser.hpp
浏览该文件的文档.
1
21
22#pragma once
23
24#include "AstGlobal.h"
25#include "AstScript/Expr.hpp"
26#include "AstUtil/Object.hpp"
27#include "AstUtil/Attribute.hpp"
28#include "AstUtil/SharedPtr.hpp"
29#include <QWidget>
30
31class QTreeWidget;
32class QTreeWidgetItem;
33class QPushButton;
34
35AST_NAMESPACE_BEGIN
36
37class UiObjectTree;
38class UiAttributeTree;
39
40class AST_GUI_API UiExpressionBrowser : public QWidget
41{
42 Q_OBJECT
43public:
44 explicit UiExpressionBrowser(QWidget* parent = nullptr);
46 UiExpressionBrowser& operator=(const UiExpressionBrowser&) = delete;
47
49 Expr* selectedExpression() const { return selectedExpr_.get(); }
50
52 static Expr* GetExpression(QWidget* parent = nullptr);
53
54signals:
57
60
61private slots:
62 void onObjectSelected(Object* object);
63 void onPropertySelected(const Attribute& attr);
64 void onCalculationSelectionChanged();
65 void onPropertyAccepted();
66 void onCalculationAccepted();
67 void onItemDoubleClicked(QTreeWidgetItem* item, int column);
68
69private:
70 void setupUi();
71 void refreshCalculationTree();
72
73 UiObjectTree* objectTree_ = nullptr;
74 UiAttributeTree* propertyTree_ = nullptr;
75 QTreeWidget* calculationTree_ = nullptr;
76 QPushButton* propertySelectButton_ = nullptr;
77 QPushButton* calculationSelectButton_ = nullptr;
78 WeakPtr<Object> currentObject_ = nullptr;
79 SharedPtr<Expr> selectedExpr_{};
80};
81
82AST_NAMESPACE_END
表达式基类
定义 Expr.hpp:40
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:95
共享指针
定义 SharedPtr.hpp:33
属性树控件,显示一个 AST 对象的所有反射属性(遍历继承链)
定义 UiAttributeTree.hpp:33
定义 UiExpressionBrowser.hpp:41
void propertyExpressionSelected(Expr *expr)
用户选择了对象属性表达式
Expr * selectedExpression() const
获取选中的表达式,无选中时返回 nullptr
定义 UiExpressionBrowser.hpp:49
void calculationExpressionSelected(Expr *expr)
用户选择了对象计算量表达式
通用对象树控件,支持显示全部对象或以指定节点为根的子树
定义 UiObjectTree.hpp:31
弱引用指针
定义 WeakPtr.hpp:35