UE4 通过slate新建一个独立的窗口

本文介绍如何在UE4中通过Slate库创建不同类型窗口,包括普通窗口、始终在最前面的窗口和模态窗口。示例代码展示了使用FSlateApplication的AddWindow、AddWindowAsNativeChild及AddModalWindow函数的用法。

通过下面两个函数

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);
    }

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值