UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SWidgetCarouselWithNavigation.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Layout/Visibility.h"
8#include "Input/Reply.h"
9#include "Widgets/SWidget.h"
13#include "Widgets/SBoxPanel.h"
14#include "Widgets/Layout/SBox.h"
15#include "WidgetCarouselStyle.h"
16#include "Widgets/SOverlay.h"
17#include "SWidgetCarousel.h"
20
22
24template <typename ItemType>
26 : public SCompoundWidget
27{
28public:
30
36
38
40
41
42 SLATE_EVENT(FOnGenerateWidget, OnGenerateWidget)
43
44
45 SLATE_ARGUMENT(const TArray<ItemType>*, WidgetItemsSource)
46
48
49 void Construct(const FArguments& InArgs)
50 {
51 OnGenerateWidget = InArgs._OnGenerateWidget;
52 WidgetItemsSource = InArgs._WidgetItemsSource;
53
55 [
58 .AutoHeight()
59 .HAlign(HAlign_Center)
60 .VAlign(VAlign_Center)
61 [
62 SNew(SBox)
63 .MaxDesiredHeight(442)
64 [
67 .HAlign(HAlign_Center)
68 .VAlign(VAlign_Center)
69 [
71 .BorderImage(FWidgetCarouselModuleStyle::Get().GetBrush("WidgetBackground"))
72 .Padding(0)
73 [
75 .Stretch(EStretch::ScaleToFit)
76 .StretchDirection(EStretchDirection::DownOnly)
77 [
79 .WidgetItemsSource(WidgetItemsSource)
80 .FadeRate(0)
81 .SlideValueLeftLimit(-1)
82 .SlideValueRightLimit(1)
83 .MoveSpeed(5.f)
84 .OnGenerateWidget(this, &SWidgetCarouselWithNavigation::GenerateWidget)
85 ]
86 ]
87 ]
88
90 .Padding(0)
91 [
94 .HAlign(HAlign_Left)
95 [
97 .Style(InArgs._NavigationButtonStyle)
98 .OnClicked(this, &SWidgetCarouselWithNavigation::HandleNextButtonClicked)
99 .Visibility(this, &SWidgetCarouselWithNavigation::GetScreenshotNavigationVisibility)
100 .OnBeginPeek(this, &SWidgetCarouselWithNavigation::HandlePeak, EWidgetCarouselScrollDirection::Carousel_Right)
101 .OnEndPeek(this, &SWidgetCarouselWithNavigation::HandlePeak, EWidgetCarouselScrollDirection::Carousel_Center)
103 ]
105 .HAlign(HAlign_Right)
106 [
108 .Style(InArgs._NavigationButtonStyle)
109 .OnClicked(this, &SWidgetCarouselWithNavigation::HandlePreviousButtonClicked)
110 .Visibility(this, &SWidgetCarouselWithNavigation::GetScreenshotNavigationVisibility)
111 .OnBeginPeek(this, &SWidgetCarouselWithNavigation::HandlePeak, EWidgetCarouselScrollDirection::Carousel_Left)
112 .OnEndPeek(this, &SWidgetCarouselWithNavigation::HandlePeak, EWidgetCarouselScrollDirection::Carousel_Center)
114 ]
115 ]
116 ]
117 ]
119 .AutoHeight()
120 .HAlign(HAlign_Center)
121 .Padding(10.0f, 10.f)
122 [
124 .Style(InArgs._NavigationBarStyle)
125 .Visibility(this, &SWidgetCarouselWithNavigation::GetScreenshotNavigationVisibility)
126 .ItemCount(WidgetItemsSource->Num())
127 .CurrentItemIndex(this, &SWidgetCarouselWithNavigation::GetCurrentItemIndex)
128 .CurrentSlideAmount(this, &SWidgetCarouselWithNavigation::GetCurrentSlideAmount)
129 .OnSelectedIndexChanged(this, &SWidgetCarouselWithNavigation::CarouselScrollBarIndexChanged)
130 ]
131 ];
132 }
133
137
138private:
139 TSharedRef<SWidget> GenerateWidget(ItemType Item)
140 {
141 return OnGenerateWidget.Execute(Item);
142 }
143
144 FReply HandleNextButtonClicked()
145 {
146 Carousel->SetNextWidget();
147 return FReply::Handled();
148 }
149
150 FReply HandlePreviousButtonClicked()
151 {
152 Carousel->SetPreviousWidget();
153 return FReply::Handled();
154 }
155
156 void HandlePeak(EWidgetCarouselScrollDirection::Type Direction)
157 {
158 Carousel->Peak(Direction);
159 }
160
161 EVisibility GetScreenshotVisibility() const
162 {
163 return WidgetItemsSource->Num() ? EVisibility::Visible : EVisibility::Collapsed;
164 }
165
166 EVisibility GetScreenshotNavigationVisibility() const
167 {
168 return WidgetItemsSource->Num() > 1 ? EVisibility::Visible : EVisibility::Collapsed;
169 }
170
171 int32 GetCurrentItemIndex() const
172 {
173 return Carousel->GetWidgetIndex();
174 }
175
176 float GetCurrentSlideAmount() const
177 {
178 return Carousel->GetPrimarySlide();
179 }
180
181 void CarouselScrollBarIndexChanged(int32 NewIndex)
182 {
183 Carousel->SetActiveWidgetIndex(NewIndex);
184 }
185
186private:
188 FOnGenerateWidget OnGenerateWidget;
189 const TArray<ItemType>* WidgetItemsSource;
190};
#define NULL
Definition oodle2base.h:134
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define SLATE_STYLE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:280
#define SAssignNew(ExposeAs, WidgetType,...)
Definition DeclarativeSyntaxSupport.h:41
#define SNew(WidgetType,...)
Definition DeclarativeSyntaxSupport.h:37
#define SLATE_EVENT(DelegateName, EventName)
Definition DeclarativeSyntaxSupport.h:458
#define SLATE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:208
Definition Reply.h:24
static FReply Handled()
Definition Reply.h:233
static WIDGETCAROUSEL_API const ISlateStyle & Get()
Definition WidgetCarouselStyle.cpp:130
Definition SBorder.h:31
Definition SBox.h:29
Definition SCarouselNavigationBar.h:20
Definition SCarouselNavigationButton.h:29
Definition SCompoundWidget.h:22
FCompoundWidgetOneChildSlot ChildSlot
Definition SCompoundWidget.h:113
Definition SBoxPanel.h:171
static FSlot::FSlotArguments Slot()
Definition SBoxPanel.h:272
Definition SOverlay.h:44
static SLATECORE_API FOverlaySlot::FSlotArguments Slot(int32 ZOrder=0)
Definition SOverlay.cpp:120
Definition SScaleBox.h:77
Definition SBoxPanel.h:322
static FSlot::FSlotArguments Slot()
Definition SBoxPanel.h:424
Definition SWidgetCarouselWithNavigation.h:27
SLATE_BEGIN_ARGS(SWidgetCarouselWithNavigation< ItemType >)
Definition SWidgetCarouselWithNavigation.h:31
void Construct(const FArguments &InArgs)
Definition SWidgetCarouselWithNavigation.h:49
TSlateDelegates< ItemType >::FOnGenerateWidget FOnGenerateWidget
Definition SWidgetCarouselWithNavigation.h:29
~SWidgetCarouselWithNavigation()
Definition SWidgetCarouselWithNavigation.h:134
Definition SWidgetCarousel.h:425
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition SlateDelegates.h:134
@ DownOnly
Definition SScaleBox.h:25
@ ScaleToFit
Definition SScaleBox.h:44
Type
Definition SWidgetCarousel.h:24
@ Carousel_Right
Definition SWidgetCarousel.h:28
@ Carousel_Left
Definition SWidgetCarousel.h:26
@ Carousel_Center
Definition SWidgetCarousel.h:30
Definition Visibility.h:12
static SLATECORE_API const EVisibility Visible
Definition Visibility.h:14
static SLATECORE_API const EVisibility Collapsed
Definition Visibility.h:17
Definition WidgetCarouselStyle.h:44
Definition WidgetCarouselStyle.h:15