定义数据结构
SlateGuideDetailsViewSettings.h
// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "UObject/NoExportTypes.h"#include "SlateGuideDetailsViewSettings.generated.h"/***/UCLASS(BlueprintType, config = EditorPerProjectUserSettings)class USlateGuideDetailsViewSettings : public UObject{GENERATED_BODY()public:UPROPERTY(EditAnywhere, Category = "Example parameters")TArray<FString> StringArray;UPROPERTY(EditAnywhere, Category = "Example parameters")float ExampleFloat;};
SDetailsViewWidget.h
#pragma once#include "CoreMinimal.h"#include "SDetailsViewWidget.h"#include "Settings/SlateGuideDetailsViewSettings.h"#include "Widgets/SCompoundWidget.h"#include <IDetailsView.h>/****/class SLATEGUIDEMODALWINDOW_API SDetailsViewWidget : public SCompoundWidget{public:SLATE_BEGIN_ARGS(SDetailsViewWidget){}SLATE_END_ARGS()/** Constructs this widget with InArgs */void Construct(const FArguments& InArgs);FReply OnCreateDetailsView();FReply OnCreateCustomSceneOutliner();TSharedPtr<IDetailsView> DetailsView;};
SDetailsViewWidget.cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "Widgets/SDetailsViewWidget.h"
#include <Widgets/SBoxPanel.h>
#include <EditorStyleSet.h>
#include "SlateOptMacros.h"
#include <Widgets/Input/SButton.h>
#include <PropertyEditorModule.h>
#define LOCTEXT_NAMESPACE "FSlateGuideModalWindowModule"
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void SDetailsViewWidget::Construct(const FArguments& InArgs)
{
FPropertyEditorModule& PropertyEditorModule = FModuleManager::GetModuleChecked<FPropertyEditorModule>("PropertyEditor");
FDetailsViewArgs DetailsViewArgs;
DetailsViewArgs.bAllowSearch = false;
USlateGuideDetailsViewSettings* DetailSettings = NewObject<USlateGuideDetailsViewSettings>();
DetailsView = PropertyEditorModule.CreateDetailView(DetailsViewArgs);
DetailsView->SetObject(DetailSettings);
ChildSlot
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
.VAlign(VAlign_Center)
[
DetailsView.ToSharedRef()
]
];
}
FReply SDetailsViewWidget::OnCreateDetailsView()
{
return FReply::Handled();
}
FReply SDetailsViewWidget::OnCreateCustomSceneOutliner()
{
return FReply::Handled();
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
#undef LOCTEXT_NAMESPACE
在slate代码中引用:
+ SVerticalBox::Slot()
.FillHeight(1.0f)
.MaxHeight(32.0f)
.Padding(FMargin(4.0f))
[
SAssignNew(DetailsViewWidget, SDetailsViewWidget)
]

