本文整理汇总了C++中TSharedRef::GetChildWindows方法的典型用法代码示例。如果您正苦于以下问题:C++ TSharedRef::GetChildWindows方法的具体用法?C++ TSharedRef::GetChildWindows怎么用?C++ TSharedRef::GetChildWindows使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TSharedRef
的用法示例。
在下文中一共展示了TSharedRef::GetChildWindows方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FindPathToWidget
bool FSlateWindowHelper::FindPathToWidget( const TArray<TSharedRef<SWindow>>& WindowsToSearch, TSharedRef<const SWidget> InWidget, FWidgetPath& OutWidgetPath, EVisibility VisibilityFilter )
{
SCOPE_CYCLE_COUNTER(STAT_FindPathToWidget);
// Iterate over our top level windows
bool bFoundWidget = false;
for (int32 WindowIndex = 0; !bFoundWidget && WindowIndex < WindowsToSearch.Num(); ++WindowIndex)
{
// Make a widget path that contains just the top-level window
TSharedRef<SWindow> CurWindow = WindowsToSearch[WindowIndex];
FArrangedChildren JustWindow(VisibilityFilter);
{
JustWindow.AddWidget(FArrangedWidget(CurWindow, CurWindow->GetWindowGeometryInScreen()));
}
FWidgetPath PathToWidget(CurWindow, JustWindow);
// Attempt to extend it to the desired child widget; essentially a full-window search for 'InWidget
if ((CurWindow == InWidget) || PathToWidget.ExtendPathTo(FWidgetMatcher(InWidget), VisibilityFilter))
{
OutWidgetPath = PathToWidget;
bFoundWidget = true;
}
if (!bFoundWidget)
{
// Search this window's children
bFoundWidget = FindPathToWidget(CurWindow->GetChildWindows(), InWidget, OutWidgetPath, VisibilityFilter);
}
}
return bFoundWidget;
}
示例2: MaybeAddOverlay
void STutorialRoot::MaybeAddOverlay(TSharedRef<SWindow> InWindow)
{
if(InWindow->HasOverlay())
{
// check we don't already have a widget overlay for this window
TWeakPtr<SEditorTutorials>* FoundWidget = TutorialWidgets.Find(InWindow);
if(FoundWidget == nullptr)
{
TSharedPtr<SEditorTutorials> TutorialWidget = nullptr;
InWindow->AddOverlaySlot()
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.VAlign(VAlign_Fill)
.HAlign(HAlign_Fill)
[
SAssignNew(TutorialWidget, SEditorTutorials)
.ParentWindow(InWindow)
.OnNextClicked(FOnNextClicked::CreateSP(this, &STutorialRoot::HandleNextClicked))
.OnBackClicked(FSimpleDelegate::CreateSP(this, &STutorialRoot::HandleBackClicked))
.OnHomeClicked(FSimpleDelegate::CreateSP(this, &STutorialRoot::HandleHomeClicked))
.OnCloseClicked(FSimpleDelegate::CreateSP(this, &STutorialRoot::HandleCloseClicked))
.OnGetCurrentTutorial(FOnGetCurrentTutorial::CreateSP(this, &STutorialRoot::HandleGetCurrentTutorial))
.OnGetCurrentTutorialStage(FOnGetCurrentTutorialStage::CreateSP(this, &STutorialRoot::HandleGetCurrentTutorialStage))
.OnLaunchTutorial(FOnLaunchTutorial::CreateSP(this, &STutorialRoot::LaunchTutorial))
.OnWasWidgetDrawn(FOnWasWidgetDrawn::CreateSP(this, &STutorialRoot::WasWidgetDrawn))
.OnWidgetWasDrawn(FOnWidgetWasDrawn::CreateSP(this, &STutorialRoot::WidgetWasDrawn))
]
];
FoundWidget = &TutorialWidgets.Add(InWindow, TutorialWidget);
FoundWidget->Pin()->RebuildCurrentContent();
}
}
TArray<TSharedRef<SWindow>> ChildWindows = InWindow->GetChildWindows();
for(auto& ChildWindow : ChildWindows)
{
MaybeAddOverlay(ChildWindow);
}
}
示例3: FindWindowByPlatformWindow
TSharedPtr<SWindow> FSlateWindowHelper::FindWindowByPlatformWindow( const TArray< TSharedRef<SWindow> >& WindowsToSearch, const TSharedRef< FGenericWindow >& PlatformWindow )
{
for (int32 WindowIndex = 0; WindowIndex < WindowsToSearch.Num(); ++WindowIndex)
{
TSharedRef<SWindow> SomeWindow = WindowsToSearch[WindowIndex];
TSharedRef<FGenericWindow> SomeNativeWindow = StaticCastSharedRef<FGenericWindow>(SomeWindow->GetNativeWindow().ToSharedRef());
if (SomeNativeWindow == PlatformWindow)
{
return SomeWindow;
}
// Search child windows
TSharedPtr<SWindow> FoundChildWindow = FindWindowByPlatformWindow(SomeWindow->GetChildWindows(), PlatformWindow);
if (FoundChildWindow.IsValid())
{
return FoundChildWindow;
}
}
return TSharedPtr<SWindow>(nullptr);
}