通过下面两个函数
FSlateApplication::Get().AddWindow( TSharedRef<SWindow> InSlateWindow,)//普通窗口
FSlateApplication::Get().AddWindowAsNativeChild()//永远在程序最前面
FSlateApplication::Get().AddModalWindow( TSharedRef<SWindow> InSlateWindow, const TSharedPtr<const SWidget> InParentWidget, bool bSlowTaskWindow)//这是一个模态窗口
示例代码
FVector2D CursorPos = FSlateApplication::Get().GetCursorPos();
FSlateRect Anchor(CursorPos.X, CursorPos.Y, CursorPos.X, CursorPos.Y);
//根据鼠标位置屏幕大小,调整出现的位置
FVector2D AdjustedSummonLocation = FSlateApplication::Get().CalculatePopupWindowPosition(Anchor, SColorPicker::DEFAULT_WINDOW_SIZE, true, FVector2D::ZeroVector, Orient_Horizontal);
SAssignNew(SlateJsonModule.ColorWindow, SWindow)
.Title(FText::FromString(TEXT("Color Picker")))
.ClientSize(FVector2D(30, 20))
.SupportsMaximize(false)
.SupportsMinimize(false)
.SizingRule(ESizingRule::Autosized)
.AutoCenter(EAutoCenter::None)
.IsInitiallyMaximized(false)
.bDragAnywhere(true)
.ScreenPosition(AdjustedSummonLocation)
[
SlateJsonModule.ColorPicker->AsShared()
];
ColorWindow=SlateJsonModule.ColorWindow;
FSlateApplication::Get().AddWindow(ColorWindow.ToSharedRef());
TSharedPtr<SWindow> TopWindow = FSlateApplication::Get().GetActiveTopLevelWindow();
if (TopWindow.IsValid())
{
//Add as Native
FSlateApplication::Get().AddWindowAsNativeChild(ColorWindow.ToSharedRef(),
TopWindow.ToSharedRef(), true);
}
本文介绍如何在UE4中通过Slate库创建不同类型窗口,包括普通窗口、始终在最前面的窗口和模态窗口。示例代码展示了使用FSlateApplication的AddWindow、AddWindowAsNativeChild及AddModalWindow函数的用法。

9073

被折叠的 条评论
为什么被折叠?



