定义数据结构
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)
]