STreeView介绍:
STreeView是UE提供的一个控件,其已经实现好一套框架,能够根据给定数据自动生成一个树形结构控件,UE的资源目录(SPathView.h)以及大纲视图(SOutlineTreeView.h)里的树状结构都是用此控件生成的。
STreeView提供了丰富的接口,可以根据需要在构建控件时传入参数即可,这里介绍最简单的使用方法,只需要提供数据(TreeItemsSource)、生成Item方法(OnGenerateRow)、获取某个节点的子节点方法(OnGetChildren),具体是实现给定一个目录,用STreeView实现查看此目录下所有文件和文件夹。如下图所示:

数据:实际上是一个数组,存储的是树所有根节点信息,每个节点需要存储节点需要表示的信息、父节点引用、子节点引用。
生成Item方法:给定一个节点,自定义实现需要显示的内容,返回一个Widget用于Item的显示。一般会根据节点里存储的必要信息去生成文本控件,图片控件等去显示Item。
获取某个节点的子节点方法:给定节点,返回其所有的子节点。这里可以做很多自定义,例如筛选功能就可以在这里根据规则只把所有子节点的符合要求的返回即可。
实例详细步骤:
1、创建C++工程TreeViewDemo。
2、创建自定义TreeView控件。在Source内创建STreeViewDemo类(S版控件)以及TreeViewWidgetDemo类(U版控件),对于为什么创建这两个类可以先了解一下UE Slate相关知识。
Build.cs,添加依赖 “UMG”、 “Slate”、 “SlateCore”、 “EditorStyle”
using UnrealBuildTool;
public class TreeViewDemo : ModuleRules
{
public TreeViewDemo(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] {
"Core", "CoreUObject", "Engine", "InputCore", "UMG", "Slate", "SlateCore", "EditorStyle" });
PrivateDependencyModuleNames.AddRange(new string[] {
});
}
}
STreeViewDemo.h
#pragma once
#include "CoreMinimal.h"
#include "Widgets/SCompoundWidget.h"
#include "Widgets/Views/STableViewBase.h"
#include "Widgets/Views/STableRow.h"
#include "Widgets/Views/STreeView.h"
class FTreeViewInstanceData
{
public:
//用于构造根节点
FTreeViewInstanceData(const FString& InPath);
//用于构造子节点
FTreeViewInstanceData(const FString& InPath, TSharedPtr<FTreeViewInstanceData>&InParent);
//获得条目标志的Icon,用于区分目录还是文件
TSharedPtr<SWidget> CreateIcon() const;
public:
// 目标路径
FString DiskPath;
// 路径最后的名字,如D:\Program Files (x86)\PVS-Studio,Name=PVS-Studio,若路径指向一个文件,则Name是不带扩展名的文件名
FString CleanName;
// 标志DiskPath指向的是一个文件还是目录
bool bIsDirectory;
//记录此节点对应的父节点
TSharedPtr<FTreeViewInstanceData> Parent;
//记录此节点对应的所有子节点
TArray<TSharedPtr<FTreeViewInstanceData>> Children;
};
class

本文介绍如何在UE4中使用STreeView控件,实现目录和文件的树形展示。通过创建自定义控件,解析目录结构,并利用STreeView的接口展示文件系统。教程包括控件创建、数据绑定及界面布局。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



