UE4 笔记_修改用户界面并添加新功能
最编程
2024-03-23 17:36:10
...
1 #include "DJWScrollBox.h"
2 #include "Components/ScrollBoxSlot.h"
3 #include "NEWScrollBox.h"
4
5 UDJWScrollBox::UDJWScrollBox(const FObjectInitializer& ObjectInitializer)
6 : Super(ObjectInitializer)
7 {}
8
9 void UDJWScrollBox::SlateHandleMouseUp()
10 {
11 OnScrollMouseButtonDownEvent.Broadcast();
12 }
13
14 void UDJWScrollBox::SlateHandleMouseDown()
15 {
16 OnScrollMouseButtonUpEvent.Broadcast();
17 }
18
19 TSharedRef<SWidget> UDJWScrollBox::RebuildWidget()
20 {
21 MyScrollBox = SNew(NEWScrollBox)
22 .Style(&WidgetStyle)
23 .ScrollBarStyle(&WidgetBarStyle)
24 .Orientation(Orientation)
25 .ConsumeMouseWheel(ConsumeMouseWheel)
26 .NavigationDestination(NavigationDestination)
27 .NavigationScrollPadding(NavigationScrollPadding)
28 .AnimateWheelScrolling(bAnimateWheelScrolling)
29 .WheelScrollMultiplier(WheelScrollMultiplier)
30 .OnUserScrolled(BIND_UOBJECT_DELEGATE(FOnUserScrolled, SlateHandleUserScrolled));
31
32 for (UPanelSlot* PanelSlot : Slots)
33 {
34 if (UScrollBoxSlot* TypedSlot = Cast<UScrollBoxSlot>(PanelSlot))
35 {
36 TypedSlot->Parent = this;
37 TypedSlot->BuildSlot(MyScrollBox.ToSharedRef());
38 }
39 }
40 NEWScrollBox* NewScroll = static_cast<NEWScrollBox*>(MyScrollBox.Get());
41 if (NewScroll)
42 {
43 NewScroll->OnScrollMouseButtonDown.BindUObject(this, &UDJWScrollBox::SlateHandleMouseDown);
44 NewScroll->OnScrollMouseButtonUp.BindUObject(this, &UDJWScrollBox::SlateHandleMouseUp);
45 }
46 return MyScrollBox.ToSharedRef();
47 }
推荐阅读