45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
#pragma once
|
||
#include "LayerTreeNode.h"
|
||
|
||
class LayerTreeLayer;
|
||
|
||
/**
|
||
* LayerTreeGroup:图层组节点
|
||
* - 基类为 LayerTreeNode
|
||
* - 提供插入图层节点(LayerTreeLayer)或图层组(LayerTreeGroup)的便利方法
|
||
*/
|
||
class LayerTreeGroup : public LayerTreeNode
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
explicit LayerTreeGroup(const QString& name = QString(),
|
||
QObject* parent = nullptr);
|
||
|
||
Type type() const override { return Type::Group; }
|
||
|
||
// 便利方法:插入子组
|
||
LayerTreeGroup* insertGroup(int index, const QString& name);
|
||
LayerTreeGroup* addGroup(const QString& name);
|
||
|
||
// 便利方法:插入图层节点
|
||
LayerTreeLayer* insertLayer(int index, LayerTreeLayer* layer);
|
||
LayerTreeLayer* addLayer(LayerTreeLayer* layer);
|
||
|
||
// 插入任意节点
|
||
void insertChildNode(int index, LayerTreeNode* node);
|
||
void addChildNode(LayerTreeNode* node);
|
||
|
||
// 移除子节点(不 delete,返回被移除节点)
|
||
LayerTreeNode* removeChildNode(LayerTreeNode* node);
|
||
|
||
// 查找
|
||
LayerTreeLayer* findLayer(const QString& name) const;
|
||
QList<LayerTreeLayer*> findLayers() const;
|
||
QList<LayerTreeGroup*> findGroups() const;
|
||
|
||
// 以后可扩展:collapsed / groupOpacity 等
|
||
};
|
||
|
||
// 保持向后兼容
|
||
using LayerTreeGroupNode = LayerTreeGroup;
|