編輯器添加SDockTab項

有時候需要在編輯器上添加自定義的項目。新建插件,在插件的StartupModule註冊,並在ShutdownModule取消註冊。假設已經新建了一個基於SCompoundWidget的控件SMyEditor,把該控件註冊到開發者工具中。

#include "UI.h"
#include "Modules/ModuleManager.h"
#include "Interfaces/IMainFrameModule.h"
#include "Editor/WorkspaceMenuStructure/Public/WorkspaceMenuStructure.h"
#include "Editor/WorkspaceMenuStructure/Public/WorkspaceMenuStructureModule.h"
#include "EditorStyleSet.h"
#include "Framework/Docking/TabManager.h"
#include "Widgets/Docking/SDockTab.h"
#include "MyEditor.h"

#define LOCTEXT_NAMESPACE "FUIModule"
 IMPLEMENT_MODULE(FUIModule, UI)
void FUIModule::StartupModule()
{
	FGlobalTabmanager::Get()->RegisterNomadTabSpawner("MyEditorTabId", FOnSpawnTab::CreateRaw(&FUIModule::SpawnEditor))
		.SetDisplayName(LOCTEXT("MyEditorTest", "MyEditor"))
		.SetTooltipText(LOCTEXT("MyEditorTestTooltipText", "MyEditorTip"))
		.SetGroup(WorkspaceMenu::GetMenuStructure().GetDeveloperToolsMiscCategory())
		.SetMenuType(ETabSpawnerMenuType::Enabled)
		.SetIcon(FSlateIcon(FEditorStyle::GetStyleSetName(), "ContentBrowser.ImportIcon"));
}

void FUIModule::ShutdownModule()
{
	FGlobalTabmanager::Get()->UnregisterTabSpawner("MyEditorTabId");
}

TSharedRef<SDockTab> FUIModule::SpawnEditor(const FSpawnTabArgs& SpawnTabArgs)
	{
		const TSharedRef<SDockTab> Tab =
		SNew(SDockTab)
		.Icon(FEditorStyle::GetBrush("ContentBrowser.ImportIcon"))
		.TabRole(ETabRole::NomadTab);

		Tab->SetContent(SNew(SMyEditor));
		return Tab;
	}

#undef LOCTEXT_NAMESPACE

 
 

需要在Build.cs 中補充添加需要依賴的模塊,效果如下:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章