UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SHeaderRow.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Misc/Attribute.h"
7#include "Layout/Visibility.h"
9#include "Layout/Margin.h"
10#include "Styling/SlateTypes.h"
11#include "Styling/CoreStyle.h"
16
17class FMenuBuilder;
18class SScrollBar;
19enum class ECheckBoxState : uint8;
20
22{
23 enum Type
24 {
29 };
30};
31
32
34{
35 enum Type
36 {
38 None = 0,
39
42
44 Descending = 2
45 };
46};
47
48
50{
51 enum Type
52 {
54 Fill = 0,
55
57 Fixed = 1,
58
60 Manual = 2,
61
64 };
65};
66
67
69{
71 Always,
72
74 Ghosted,
75
77 OnHover,
78
80 Never
81};
82
83
86
89
92
93template <>
95{
96 static constexpr bool SupportsInvalidation() { return true; }
97};
98
102class SHeaderRow : public SBorder
103{
104public:
107 {
108 public:
109
139
140
141 SLATE_ATTRIBUTE( float, FillWidth )
149
150
151 SLATE_ARGUMENT(float, MinSize)
152
153 SLATE_DEFAULT_SLOT( FArguments, HeaderContent )
158
159 SLATE_NAMED_SLOT( FArguments, MenuContent )
161
162
164
167
174
179
180 FColumn( const FArguments& InArgs )
181 : ColumnId( InArgs._ColumnId )
182 , DefaultText( InArgs._DefaultLabel )
184 , ToolTip(InArgs._ToolTip)
185 , Width( 1.0f )
186 , DefaultWidth( 1.0f )
188 , MinSize( InArgs._MinSize )
190 , HeaderContent( InArgs._HeaderContent )
198 , CellHAlignment( InArgs._HAlignCell )
199 , CellVAlignment( InArgs._VAlignCell )
202 , SortMode( InArgs._SortMode )
203 , SortPriority( InArgs._SortPriority )
204 , IsSorting( InArgs._IsSorting)
206 , OnSortModeChanged( InArgs._OnSort )
210 {
211 if ( InArgs._FixedWidth.IsSet() )
212 {
213 Width = InArgs._FixedWidth.GetValue();
215 }
216 else if ( InArgs._ManualWidth.IsSet() )
217 {
218 Width = InArgs._ManualWidth;
220 }
221 else if ( InArgs._FillSized.IsSet() )
222 {
223 Width = InArgs._FillSized.GetValue();
225 }
226 else
227 {
228 Width = InArgs._FillWidth;
230 }
231
233 }
234
235 public:
236
237 void SetWidth( float NewWidth )
238 {
239 if ( OnWidthChanged.IsBound() )
240 {
241 OnWidthChanged.Execute( NewWidth );
242 }
243 else
244 {
245 Width = NewWidth;
246 }
247 }
248
249 float GetWidth() const
250 {
251 return Width.Get();
252 }
253
256
259
262
265
268
271
273
275 float MinSize;
276
278
281
284
289
292
294
301
305 };
306
308 static FColumn::FArguments Column( const FName& InColumnId )
309 {
310 FColumn::FArguments NewArgs;
311 NewArgs.ColumnId( InColumnId );
312 return NewArgs;
313 }
314
316 FColumnsChanged* OnColumnsChanged() { return &ColumnsChanged; }
317
319 : _Style( &FAppStyle::Get().GetWidgetStyle<FHeaderRowStyle>("TableView.Header") )
322 {}
323
326 SLATE_EVENT( FColumnsChanged::FDelegate, OnColumnsChanged )
327 SLATE_EVENT( FOnGetMaxRowSizeForColumn, OnGetMaxRowSizeForColumn )
329 SLATE_ARGUMENT( TOptional<float>, SplitterHandleSize )
339 SLATE_EVENT( FSimpleDelegate, OnHiddenColumnsListChanged )
341
342 SLATE_API void Construct( const FArguments& InArgs );
343
346
348 SLATE_API const TIndirectArray<FColumn>& GetColumns() const;
349
351 SLATE_API void AddColumn( const FColumn::FArguments& NewColumnArgs );
352 SLATE_API void AddColumn( FColumn& NewColumn );
353
355 SLATE_API void InsertColumn( const FColumn::FArguments& NewColumnArgs, int32 InsertIdx );
357
359 SLATE_API void RemoveColumn( const FName& InColumnId );
360
363
365 SLATE_API void ClearColumns();
366
367 SLATE_API void SetAssociatedVerticalScrollBar( const TSharedRef< SScrollBar >& ScrollBar, const float ScrollBarSize );
368
370 SLATE_API void SetColumnWidth( const FName& InColumnId, float InWidth );
371
374
376 void SetOnGetMaxRowSizeForColumn(const FOnGetMaxRowSizeForColumn& Delegate) { OnGetMaxRowSizeForColumn = Delegate; }
377
380
382 SLATE_API bool ShouldGeneratedColumn( const FName& InColumnId ) const;
383
386
388 SLATE_API bool IsColumnGenerated( const FName& InColumnId ) const;
389
391 SLATE_API bool IsColumnVisible( const FName& InColumnId ) const;
392
393 //~ Begin SWidget interface
395 //~ End SWidget interface
396
398 SLATE_API void SetShowGeneratedColumn(const FName& InColumnIdm, bool InShow = true);
399
400
401private:
402
404 SLATE_API void RegenerateWidgets();
405
406 void ToggleAllColumns();
407 bool CanToggleAllColumns() const;
408 ECheckBoxState GetSelectAllColumnsCheckState() const;
409 FText GetToggleAllColumnsText() const;
410
411 void OnGenerateSelectColumnsSubMenu(FMenuBuilder& InSubMenuBuilder);
412 SLATE_API void ToggleGeneratedColumn(FName ColumnId);
413 SLATE_API ECheckBoxState GetGeneratedColumnCheckedState(FName ColumnId) const;
414
418
419 FVector2f ScrollBarThickness;
420 TAttribute< EVisibility > ScrollBarVisibility;
421 const FHeaderRowStyle* Style;
422 FColumnsChanged ColumnsChanged;
423 ESplitterResizeMode::Type ResizeMode;
424 float SplitterHandleSize;
425 FOnGetMaxRowSizeForColumn OnGetMaxRowSizeForColumn;
426
427 FSimpleDelegate OnHiddenColumnsListChanged;
428 bool bCanSelectGeneratedColumn;
429};
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_NAMED_SLOT(DeclarationType, SlotName)
Definition DeclarativeSyntaxSupport.h:437
#define SLATE_STYLE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:280
#define SLATE_ATTRIBUTE(AttrType, AttrName)
Definition DeclarativeSyntaxSupport.h:192
#define SLATE_SUPPORTS_SLOT_WITH_ARGS(SlotType)
Definition DeclarativeSyntaxSupport.h:330
#define SLATE_EVENT(DelegateName, EventName)
Definition DeclarativeSyntaxSupport.h:458
#define SLATE_END_ARGS()
Definition DeclarativeSyntaxSupport.h:116
#define SLATE_DEFAULT_SLOT(DeclarationType, SlotName)
Definition DeclarativeSyntaxSupport.h:444
#define SLATE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:208
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
#define DECLARE_DELEGATE_RetVal_TwoParams(ReturnValueType, DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:63
#define DECLARE_DELEGATE_ThreeParams(DelegateName, Param1Type, Param2Type, Param3Type)
Definition DelegateCombinations.h:66
return true
Definition ExternalRpcRegistry.cpp:601
EHeaderComboVisibility
Definition SHeaderRow.h:69
EHorizontalAlignment
Definition SlateEnums.h:174
EOrientation
Definition SlateEnums.h:261
EVerticalAlignment
Definition SlateEnums.h:194
ECheckBoxState
Definition SlateTypes.h:65
ETextOverflowPolicy
Definition SlateTypes.h:79
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition AppStyle.h:24
Definition MultiBoxBuilder.h:310
Definition NameTypes.h:617
Definition Reply.h:24
Definition Text.h:385
Definition SBorder.h:31
Definition SHeaderRow.h:107
EColumnSizeMode::Type SizeRule
Definition SHeaderRow.h:277
TAttribute< bool > ShouldGenerateWidget
Definition SHeaderRow.h:302
EHorizontalAlignment HeaderHAlignment
Definition SHeaderRow.h:285
FOnGetContent OnGetMenuContent
Definition SHeaderRow.h:282
TAttribute< TSharedPtr< IToolTip > > ToolTip
Definition SHeaderRow.h:264
EHeaderComboVisibility HeaderComboVisibility
Definition SHeaderRow.h:288
TAttribute< FText > DefaultText
Definition SHeaderRow.h:258
float GetWidth() const
Definition SHeaderRow.h:249
FOnSortModeChanged OnSortModeChanged
Definition SHeaderRow.h:300
FName ColumnId
Definition SHeaderRow.h:255
EVerticalAlignment HeaderVAlignment
Definition SHeaderRow.h:286
EHorizontalAlignment CellHAlignment
Definition SHeaderRow.h:290
TAlwaysValidWidget HeaderMenuContent
Definition SHeaderRow.h:280
FOnWidthChanged OnWidthChanged
Definition SHeaderRow.h:272
TAttribute< EColumnSortPriority::Type > SortPriority
Definition SHeaderRow.h:297
TAttribute< EColumnSortMode::Type > InitialSortMode
Definition SHeaderRow.h:295
ETextOverflowPolicy OverflowPolicy
Definition SHeaderRow.h:293
TAttribute< EColumnSortMode::Type > SortMode
Definition SHeaderRow.h:296
TAttribute< FText > DefaultTooltip
Definition SHeaderRow.h:261
TAttribute< bool > IsSorting
Definition SHeaderRow.h:298
EVerticalAlignment CellVAlignment
Definition SHeaderRow.h:291
SLATE_BEGIN_ARGS(FColumn)
Definition SHeaderRow.h:110
float DefaultWidth
Definition SHeaderRow.h:270
FPointerEventHandler OnColumnSplitterDoubleClick
Definition SHeaderRow.h:283
TAlwaysValidWidget HeaderContent
Definition SHeaderRow.h:279
void SetWidth(float NewWidth)
Definition SHeaderRow.h:237
TAttribute< float > Width
Definition SHeaderRow.h:267
TAttribute< bool > CanManuallySort
Definition SHeaderRow.h:299
bool bIsVisible
Definition SHeaderRow.h:304
TAttribute< bool > ShouldGenerateEmptyWidgetForSpacing
Definition SHeaderRow.h:303
float MinSize
Definition SHeaderRow.h:275
TOptional< FMargin > HeaderContentPadding
Definition SHeaderRow.h:287
Definition SHeaderRow.h:103
SLATE_API void SetAssociatedVerticalScrollBar(const TSharedRef< SScrollBar > &ScrollBar, const float ScrollBarSize)
Definition SHeaderRow.cpp:668
SLATE_API void ClearColumns()
Definition SHeaderRow.cpp:656
SLATE_API TArray< FName > GetHiddenColumnIds() const
Definition SHeaderRow.cpp:715
SLATE_API FVector2D GetRowSizeForSlotIndex(int32 SlotIndex) const
Definition SHeaderRow.cpp:689
virtual SLATE_API FReply OnMouseButtonUp(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent) override
Definition SHeaderRow.cpp:777
SLATE_API bool IsColumnVisible(const FName &InColumnId) const
Definition SHeaderRow.cpp:765
DECLARE_EVENT_OneParam(SHeaderRow, FColumnsChanged, const TSharedRef< SHeaderRow > &)
static FColumn::FArguments Column(const FName &InColumnId)
Definition SHeaderRow.h:308
SLATE_API void SetColumnWidth(const FName &InColumnId, float InWidth)
Definition SHeaderRow.cpp:675
SLATE_API void AddColumn(const FColumn::FArguments &NewColumnArgs)
Definition SHeaderRow.cpp:600
FColumnsChanged * OnColumnsChanged()
Definition SHeaderRow.h:316
SLATE_API void RemoveColumn(const FName &InColumnId)
Definition SHeaderRow.cpp:634
SLATE_API void RefreshColumns()
Definition SHeaderRow.cpp:651
SLATE_API bool ShouldGeneratedColumn(const FName &InColumnId) const
Definition SHeaderRow.cpp:729
SLATE_API void Construct(const FArguments &InArgs)
Definition SHeaderRow.cpp:546
SLATE_BEGIN_ARGS(SHeaderRow)
Definition SHeaderRow.h:318
SLATE_API void SetShowGeneratedColumn(const FName &InColumnIdm, bool InShow=true)
Definition SHeaderRow.cpp:1186
SLATE_API bool IsColumnGenerated(const FName &InColumnId) const
Definition SHeaderRow.cpp:753
SLATE_API void InsertColumn(const FColumn::FArguments &NewColumnArgs, int32 InsertIdx)
Definition SHeaderRow.cpp:612
void SetOnGetMaxRowSizeForColumn(const FOnGetMaxRowSizeForColumn &Delegate)
Definition SHeaderRow.h:376
SLATE_API void ResetColumnWidths()
Definition SHeaderRow.cpp:586
SLATE_API bool ShouldGenerateEmptyColumnForSpacing(const FName &InColumnId) const
Definition SHeaderRow.cpp:741
SLATE_API const TIndirectArray< FColumn > & GetColumns() const
Definition SHeaderRow.cpp:595
Definition SScrollBar.h:29
Definition Array.h:670
const ObjectType & Get() const
Definition Attribute.h:241
Definition IndirectArray.h:20
Definition SharedPointer.h:153
Definition SHeaderRow.h:50
Type
Definition SHeaderRow.h:52
@ FillSized
Definition SHeaderRow.h:63
@ Fill
Definition SHeaderRow.h:54
@ Fixed
Definition SHeaderRow.h:57
@ Manual
Definition SHeaderRow.h:60
Definition SHeaderRow.h:34
Type
Definition SHeaderRow.h:36
@ None
Definition SHeaderRow.h:38
@ Ascending
Definition SHeaderRow.h:41
@ Descending
Definition SHeaderRow.h:44
Definition SHeaderRow.h:22
Type
Definition SHeaderRow.h:24
@ Secondary
Definition SHeaderRow.h:27
@ None
Definition SHeaderRow.h:25
@ Primary
Definition SHeaderRow.h:26
@ Max
Definition SHeaderRow.h:28
Definition SSplitter.h:27
Type
Definition SSplitter.h:29
@ false
Definition radaudio_common.h:23
Definition Geometry.h:40
Definition SlateTypes.h:1849
Definition Events.h:695
Definition DeclarativeSyntaxSupport.h:392
static constexpr bool SupportsInvalidation()
Definition SHeaderRow.h:96
Definition SWidget.h:69