定义数据结构
    SlateGuideDetailsViewSettings.h

    1. // Fill out your copyright notice in the Description page of Project Settings.
    2. #pragma once
    3. #include "CoreMinimal.h"
    4. #include "UObject/NoExportTypes.h"
    5. #include "SlateGuideDetailsViewSettings.generated.h"
    6. /*
    7. *
    8. */
    9. UCLASS(BlueprintType, config = EditorPerProjectUserSettings)
    10. class USlateGuideDetailsViewSettings : public UObject
    11. {
    12. GENERATED_BODY()
    13. public:
    14. UPROPERTY(EditAnywhere, Category = "Example parameters")
    15. TArray<FString> StringArray;
    16. UPROPERTY(EditAnywhere, Category = "Example parameters")
    17. float ExampleFloat;
    18. };

    SDetailsViewWidget.h

    1. #pragma once
    2. #include "CoreMinimal.h"
    3. #include "SDetailsViewWidget.h"
    4. #include "Settings/SlateGuideDetailsViewSettings.h"
    5. #include "Widgets/SCompoundWidget.h"
    6. #include <IDetailsView.h>
    7. /**
    8. *
    9. */
    10. class SLATEGUIDEMODALWINDOW_API SDetailsViewWidget : public SCompoundWidget
    11. {
    12. public:
    13. SLATE_BEGIN_ARGS(SDetailsViewWidget)
    14. {}
    15. SLATE_END_ARGS()
    16. /** Constructs this widget with InArgs */
    17. void Construct(const FArguments& InArgs);
    18. FReply OnCreateDetailsView();
    19. FReply OnCreateCustomSceneOutliner();
    20. TSharedPtr<IDetailsView> DetailsView;
    21. };

    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)
                    ]
    

    image.png