本文整理汇总了C++中TSharedRef类的典型用法代码示例。如果您正苦于以下问题:C++ TSharedRef类的具体用法?C++ TSharedRef怎么用?C++ TSharedRef使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TSharedRef类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: RegisterTabSpawners
void FCreatureAnimStateMachineEditor::RegisterTabSpawners(const TSharedRef<class FTabManager>& TabManager)
{
GraphEditorCommands = MakeShareable(new FUICommandList());
FAssetEditorToolkit::RegisterTabSpawners(TabManager);
//蓝图编辑器命令绑定
GraphEditorCommands->MapAction(FGenericCommands::Get().Delete,
FExecuteAction::CreateSP(this,&FCreatureAnimStateMachineEditor::OnDeleteNode)
);
/*NodeAction.OnSelectionChanged.BindLambda(
[&](const FGraphPanelSelectionSet& selection){
for (auto obj : selection)
{
if (UCreatureAnimStateNode* Node =Cast<UCreatureAnimStateNode>(obj))
{
EditGraph->NotifyGraphChanged();
}
}
}
);*/
EditGraph =SNew(SGraphEditor)
.GraphToEdit(EditingStateMachine->StateMachineGraph)
.IsEditable(true)
.AdditionalCommands(GraphEditorCommands)
.GraphEvents(NodeAction)
;
//将细节面板放入左侧面板
TabManager->RegisterTabSpawner(FName(TEXT("Details")), FOnSpawnTab::CreateLambda(
[&](const FSpawnTabArgs& Args){
TSharedPtr<FCreatureAnimStateMachineEditor> StateMechineEditorPtr = SharedThis(this);
// Spawn the tab
return SNew(SDockTab)
.Icon(FEditorStyle::GetBrush("LevelEditor.Tabs.Details"))
.Label(LOCTEXT("DetailsTab_Title", "Details"))
[
SNew(SCreatureAnimStateMachinePropertiesTabBody,StateMechineEditorPtr)
];
}
))
.SetDisplayName(LOCTEXT("DetailsTabLabel", "Details"))
.SetIcon(FSlateIcon(FEditorStyle::GetStyleSetName(), "LevelEditor.Tabs.Details"));
TabManager->RegisterTabSpawner(FName(TEXT("BluePrint")), FOnSpawnTab::CreateLambda(
//用于产生布局的Lambda表达式
[&](const FSpawnTabArgs& Args){
return SNew(SDockTab)
.Icon(FEditorStyle::GetBrush("LevelEditor.Tabs.Details"))
.Label(LOCTEXT("BlueprintTab_Title", "Blueprint"))
[
EditGraph.ToSharedRef()//Slate允许提供一个sharedRef,不需要原地构建控件
];
}
))
.SetDisplayName(LOCTEXT("DetailsTabLabel", "Details"))
.SetIcon(FSlateIcon(FEditorStyle::GetStyleSetName(), "LevelEditor.Tabs.Details"));
}
开发者ID:flg1217,项目名称:Creature_UE4,代码行数:63,代码来源:CreatureAnimStateMachineEditor.cpp
示例2: FVector2D
int32 FSequencerTimeSliderController::OnPaintTimeSlider( bool bMirrorLabels, const FGeometry& AllottedGeometry, const FSlateRect& MyClippingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled ) const
{
const bool bEnabled = bParentEnabled;
const ESlateDrawEffect::Type DrawEffects = bEnabled ? ESlateDrawEffect::None : ESlateDrawEffect::DisabledEffect;
TRange<float> LocalViewRange = TimeSliderArgs.ViewRange.Get();
const float LocalViewRangeMin = LocalViewRange.GetLowerBoundValue();
const float LocalViewRangeMax = LocalViewRange.GetUpperBoundValue();
const float LocalSequenceLength = LocalViewRangeMax-LocalViewRangeMin;
FVector2D Scale = FVector2D(1.0f,1.0f);
if ( LocalSequenceLength > 0)
{
FScrubRangeToScreen RangeToScreen( LocalViewRange, AllottedGeometry.Size );
const float MajorTickHeight = 9.0f;
FDrawTickArgs Args;
Args.AllottedGeometry = AllottedGeometry;
Args.bMirrorLabels = bMirrorLabels;
Args.bOnlyDrawMajorTicks = false;
Args.TickColor = FLinearColor::White;
Args.ClippingRect = MyClippingRect;
Args.DrawEffects = DrawEffects;
Args.StartLayer = LayerId;
Args.TickOffset = bMirrorLabels ? 0.0f : FMath::Abs( AllottedGeometry.Size.Y - MajorTickHeight );
Args.MajorTickHeight = MajorTickHeight;
DrawTicks( OutDrawElements, RangeToScreen, Args );
FPaintPlaybackRangeArgs PlaybackRangeArgs(
bMirrorLabels ? FEditorStyle::GetBrush("Sequencer.Timeline.PlayRange_Bottom_L") : FEditorStyle::GetBrush("Sequencer.Timeline.PlayRange_Top_L"),
bMirrorLabels ? FEditorStyle::GetBrush("Sequencer.Timeline.PlayRange_Bottom_R") : FEditorStyle::GetBrush("Sequencer.Timeline.PlayRange_Top_R"),
6.f
);
LayerId = DrawPlaybackRange(AllottedGeometry, MyClippingRect, OutDrawElements, LayerId, RangeToScreen, PlaybackRangeArgs);
float HalfSize = FMath::CeilToFloat(ScrubHandleSize/2.0f);
// Draw the scrub handle
float XPos = RangeToScreen.InputToLocalX( TimeSliderArgs.ScrubPosition.Get() );
// Should draw above the text
const int32 ArrowLayer = LayerId + 2;
FPaintGeometry MyGeometry = AllottedGeometry.ToPaintGeometry( FVector2D( XPos-HalfSize, 0 ), FVector2D( ScrubHandleSize, AllottedGeometry.Size.Y ) );
FLinearColor ScrubColor = InWidgetStyle.GetColorAndOpacityTint();
// @todo Sequencer this color should be specified in the style
ScrubColor.A = ScrubColor.A*0.75f;
ScrubColor.B *= 0.1f;
ScrubColor.G *= 0.2f;
FSlateDrawElement::MakeBox(
OutDrawElements,
ArrowLayer,
MyGeometry,
bMirrorLabels ? ScrubHandleUp : ScrubHandleDown,
MyClippingRect,
DrawEffects,
ScrubColor
);
// Draw the current time next to the scrub handle
float Time = TimeSliderArgs.ScrubPosition.Get();
FString FrameString;
if (SequencerSnapValues::IsTimeSnapIntervalFrameRate(TimeSliderArgs.Settings->GetTimeSnapInterval()) && TimeSliderArgs.Settings->GetShowFrameNumbers())
{
float FrameRate = 1.0f/TimeSliderArgs.Settings->GetTimeSnapInterval();
float FrameTime = Time * FrameRate;
int32 Frame = SequencerHelpers::TimeToFrame(Time, FrameRate);
const float FrameTolerance = 0.001f;
if (FMath::IsNearlyEqual(FrameTime, (float)Frame, FrameTolerance))
{
FrameString = FString::Printf( TEXT("%d"), TimeToFrame(Time));
}
else
{
FrameString = FString::Printf( TEXT("%.3f"), FrameTime);
}
}
else
{
FrameString = FString::Printf( TEXT("%.2f"), Time );
}
FSlateFontInfo SmallLayoutFont( FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Regular.ttf"), 10 );
const TSharedRef< FSlateFontMeasure > FontMeasureService = FSlateApplication::Get().GetRenderer()->GetFontMeasureService();
FVector2D TextSize = FontMeasureService->Measure(FrameString, SmallLayoutFont);
// Flip the text position if getting near the end of the view range
if ((AllottedGeometry.Size.X - XPos) < (TextSize.X + 14.f))
{
XPos = XPos - TextSize.X - 12.f;
}
else
{
XPos = XPos + 10.f;
}
//.........这里部分代码省略.........
开发者ID:RandomDeveloperM,项目名称:UE4_Hairworks,代码行数:101,代码来源:TimeSliderController.cpp
示例3: TestUniqueIdRepl
void TestUniqueIdRepl(UWorld* InWorld)
{
#if !UE_BUILD_SHIPPING
bool bSuccess = true;
TSharedPtr<const FUniqueNetId> UserId = UOnlineEngineInterface::Get()->GetUniquePlayerId(InWorld, 0);
FUniqueNetIdRepl EmptyIdIn;
if (EmptyIdIn.IsValid())
{
UE_LOG(LogNet, Warning, TEXT("EmptyId is valid."), *EmptyIdIn->ToString());
bSuccess = false;
}
FUniqueNetIdRepl ValidIdIn(UserId);
if (!ValidIdIn.IsValid() || UserId != ValidIdIn.GetUniqueNetId() || *UserId != *ValidIdIn)
{
UE_LOG(LogNet, Warning, TEXT("UserId input %s != UserId output %s"), *UserId->ToString(), *ValidIdIn->ToString());
bSuccess = false;
}
if (bSuccess)
{
TArray<uint8> Buffer;
for (int32 i = 0; i < 2; i++)
{
Buffer.Empty();
FMemoryWriter TestWriteUniqueId(Buffer);
if (i == 0)
{
// Normal serialize
TestWriteUniqueId << EmptyIdIn;
TestWriteUniqueId << ValidIdIn;
}
else
{
// Net serialize
bool bOutSuccess = false;
EmptyIdIn.NetSerialize(TestWriteUniqueId, NULL, bOutSuccess);
ValidIdIn.NetSerialize(TestWriteUniqueId, NULL, bOutSuccess);
}
FMemoryReader TestReadUniqueId(Buffer);
FUniqueNetIdRepl EmptyIdOut;
TestReadUniqueId << EmptyIdOut;
if (EmptyIdOut.GetUniqueNetId().IsValid())
{
UE_LOG(LogNet, Warning, TEXT("EmptyId %s should have been invalid"), *EmptyIdOut->ToString());
bSuccess = false;
}
FUniqueNetIdRepl ValidIdOut;
TestReadUniqueId << ValidIdOut;
if (*UserId != *ValidIdOut.GetUniqueNetId())
{
UE_LOG(LogNet, Warning, TEXT("UserId input %s != UserId output %s"), *ValidIdIn->ToString(), *ValidIdOut->ToString());
bSuccess = false;
}
}
}
if (bSuccess)
{
FString OutString;
TSharedRef<FJsonValue> JsonValue = ValidIdIn.ToJson();
bSuccess = JsonValue->TryGetString(OutString);
if (bSuccess)
{
FUniqueNetIdRepl NewIdOut;
NewIdOut.FromJson(OutString);
bSuccess = NewIdOut.IsValid();
}
}
if (!bSuccess)
{
UE_LOG(LogNet, Warning, TEXT("TestUniqueIdRepl test failure!"));
}
#endif
}
开发者ID:zhaoyizheng0930,项目名称:UnrealEngine,代码行数:83,代码来源:OnlineReplStructs.cpp
示例4: if
void FWheeledVehicleMovementComponent4WDetails::CustomizeDetails(IDetailLayoutBuilder& DetailBuilder)
{
DetailBuilder.GetObjectsBeingCustomized(SelectedObjects);
//we only do fancy customization if we have one vehicle component selected
if (SelectedObjects.Num() != 1)
{
return;
}
else if (UWheeledVehicleMovementComponent4W * VehicleComponent = Cast<UWheeledVehicleMovementComponent4W>(SelectedObjects[0].Get()))
{
SteeringCurveEditor = FSteeringCurveEditor(VehicleComponent);
TorqueCurveEditor = FTorqueCurveEditor(VehicleComponent);
}
else
{
return;
}
//Torque curve
{
IDetailCategoryBuilder& MechanicalCategory = DetailBuilder.EditCategory("MechanicalSetup");
TSharedRef<IPropertyHandle> TorqueCurveHandle = DetailBuilder.GetProperty("EngineSetup.TorqueCurve");
MechanicalCategory.AddProperty(TorqueCurveHandle).CustomWidget()
.NameContent()
[
TorqueCurveHandle->CreatePropertyNameWidget()
]
.ValueContent()
.MinDesiredWidth(125.f * 3.f)
[
SAssignNew(TorqueCurveWidget, SCurveEditor)
.ViewMinInput(0.f)
.ViewMaxInput(70000.f)
.ViewMinOutput(0.f)
.ViewMaxOutput(1.f)
.TimelineLength(7000.f)
.HideUI(false)
.DesiredSize(FVector2D(512, 128))
];
TorqueCurveWidget->SetCurveOwner(&TorqueCurveEditor);
}
//Steering curve
{
IDetailCategoryBuilder& SteeringCategory = DetailBuilder.EditCategory("SteeringSetup");
TSharedRef<IPropertyHandle> SteeringCurveHandle = DetailBuilder.GetProperty("SteeringCurve");
SteeringCategory.AddProperty(SteeringCurveHandle).CustomWidget()
.NameContent()
[
SteeringCurveHandle->CreatePropertyNameWidget()
]
.ValueContent()
.MinDesiredWidth(125.f * 3.f)
[
SAssignNew(SteeringCurveWidget, SCurveEditor)
.ViewMinInput(0.f)
.ViewMaxInput(150.f)
.ViewMinOutput(0.f)
.ViewMaxOutput(1.f)
.TimelineLength(150)
.HideUI(false)
.ZoomToFitVertical(false)
.ZoomToFitHorizontal(false)
.DesiredSize(FVector2D(512, 128))
];
SteeringCurveWidget->SetCurveOwner(&SteeringCurveEditor);
}
}
开发者ID:Art1stical,项目名称:AHRUnrealEngine,代码行数:72,代码来源:WheeledVehicleMovementComponent4WDetails.cpp
示例5: Construct
void Construct( const FArguments& InArgs )
{
OnCancelClickedDelegate = InArgs._OnCancelClickedDelegate;
TSharedRef<SVerticalBox> VerticalBox = SNew(SVerticalBox)
+SVerticalBox::Slot()
.AutoHeight()
.Padding( 14.0f, 4.0f, 14.0f, 10.0f )
[
SNew( STextBlock )
.Text( this, &SSlowTaskWidget::OnGetProgressText )
.ShadowOffset( FVector2D( 1.0f, 1.0f ) )
];
if ( OnCancelClickedDelegate.IsBound() )
{
VerticalBox->AddSlot()
.AutoHeight()
.Padding(10.0f, 7.0f)
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.Padding(5,0,0,0)
.FillWidth(0.8f)
[
SNew(SProgressBar)
.Percent( this, &SSlowTaskWidget::GetProgressFraction )
]
+SHorizontalBox::Slot()
.Padding(5,0,0,0)
.FillWidth(0.2f)
[
SNew(SButton)
.Text( NSLOCTEXT("FeedbackContextProgress", "Cancel", "Cancel") )
.HAlign(EHorizontalAlignment::HAlign_Center)
.OnClicked(this, &SSlowTaskWidget::OnCancel)
]
];
}
else
{
VerticalBox->AddSlot()
.AutoHeight()
.Padding(10.0f, 7.0f)
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.Padding(5,0,0,0)
.FillWidth(1.0f)
[
SNew(SProgressBar)
.Percent( this, &SSlowTaskWidget::GetProgressFraction )
]
];
}
SBorder::Construct( SBorder::FArguments()
.BorderImage(FEditorStyle::GetBrush("Menu.Background"))
.VAlign(VAlign_Center)
[
VerticalBox
]
);
}
开发者ID:Tigrouzen,项目名称:UnrealEngine-4,代码行数:64,代码来源:FeedbackContextEditor.cpp
示例6: MakeShareable
void FCPPRichTextSyntaxHighlighterTextLayoutMarshaller::ParseTokens(const FString& SourceString, FTextLayout& TargetTextLayout, TArray<FSyntaxTokenizer::FTokenizedLine> TokenizedLines)
{
enum class EParseState : uint8
{
None,
LookingForString,
LookingForCharacter,
LookingForSingleLineComment,
LookingForMultiLineComment,
};
// Parse the tokens, generating the styled runs for each line
EParseState ParseState = EParseState::None;
for(const FSyntaxTokenizer::FTokenizedLine& TokenizedLine : TokenizedLines)
{
TSharedRef<FString> ModelString = MakeShareable(new FString());
TArray< TSharedRef< IRun > > Runs;
if(ParseState == EParseState::LookingForSingleLineComment)
{
ParseState = EParseState::None;
}
for(const FSyntaxTokenizer::FToken& Token : TokenizedLine.Tokens)
{
const FString TokenText = SourceString.Mid(Token.Range.BeginIndex, Token.Range.Len());
const FTextRange ModelRange(ModelString->Len(), ModelString->Len() + TokenText.Len());
ModelString->Append(TokenText);
FRunInfo RunInfo(TEXT("SyntaxHighlight.CPP.Normal"));
FTextBlockStyle TextBlockStyle = SyntaxTextStyle.NormalTextStyle;
const bool bIsWhitespace = FString(TokenText).TrimTrailing().IsEmpty();
if(!bIsWhitespace)
{
bool bHasMatchedSyntax = false;
if(Token.Type == FSyntaxTokenizer::ETokenType::Syntax)
{
if(ParseState == EParseState::None && TokenText == TEXT("\""))
{
RunInfo.Name = TEXT("SyntaxHighlight.CPP.String");
TextBlockStyle = SyntaxTextStyle.StringTextStyle;
ParseState = EParseState::LookingForString;
bHasMatchedSyntax = true;
}
else if(ParseState == EParseState::LookingForString && TokenText == TEXT("\""))
{
RunInfo.Name = TEXT("SyntaxHighlight.CPP.Normal");
TextBlockStyle = SyntaxTextStyle.StringTextStyle;
ParseState = EParseState::None;
}
else if(ParseState == EParseState::None && TokenText == TEXT("\'"))
{
RunInfo.Name = TEXT("SyntaxHighlight.CPP.String");
TextBlockStyle = SyntaxTextStyle.StringTextStyle;
ParseState = EParseState::LookingForCharacter;
bHasMatchedSyntax = true;
}
else if(ParseState == EParseState::LookingForCharacter && TokenText == TEXT("\'"))
{
RunInfo.Name = TEXT("SyntaxHighlight.CPP.Normal");
TextBlockStyle = SyntaxTextStyle.StringTextStyle;
ParseState = EParseState::None;
}
else if(ParseState == EParseState::None && TokenText.StartsWith(TEXT("#")))
{
RunInfo.Name = TEXT("SyntaxHighlight.CPP.PreProcessorKeyword");
TextBlockStyle = SyntaxTextStyle.PreProcessorKeywordTextStyle;
ParseState = EParseState::None;
}
else if(ParseState == EParseState::None && TokenText == TEXT("//"))
{
RunInfo.Name = TEXT("SyntaxHighlight.CPP.Comment");
TextBlockStyle = SyntaxTextStyle.CommentTextStyle;
ParseState = EParseState::LookingForSingleLineComment;
}
else if(ParseState == EParseState::None && TokenText == TEXT("/*"))
{
RunInfo.Name = TEXT("SyntaxHighlight.CPP.Comment");
TextBlockStyle = SyntaxTextStyle.CommentTextStyle;
ParseState = EParseState::LookingForMultiLineComment;
}
else if(ParseState == EParseState::LookingForMultiLineComment && TokenText == TEXT("*/"))
{
RunInfo.Name = TEXT("SyntaxHighlight.CPP.Comment");
TextBlockStyle = SyntaxTextStyle.CommentTextStyle;
ParseState = EParseState::None;
}
else if(ParseState == EParseState::None && TChar<WIDECHAR>::IsAlpha(TokenText[0]))
{
RunInfo.Name = TEXT("SyntaxHighlight.CPP.Keyword");
TextBlockStyle = SyntaxTextStyle.KeywordTextStyle;
ParseState = EParseState::None;
}
else if(ParseState == EParseState::None && !TChar<WIDECHAR>::IsAlpha(TokenText[0]))
{
RunInfo.Name = TEXT("SyntaxHighlight.CPP.Operator");
TextBlockStyle = SyntaxTextStyle.OperatorTextStyle;
ParseState = EParseState::None;
//.........这里部分代码省略.........
开发者ID:PickUpSU,项目名称:UnrealEngine4,代码行数:101,代码来源:CPPRichTextSyntaxHighlighterTextLayoutMarshaller.cpp
示例7: ScopedConnection
bool FPerforceCheckInWorker::Execute(FPerforceSourceControlCommand& InCommand)
{
FScopedPerforceConnection ScopedConnection(InCommand);
if (!InCommand.IsCanceled() && ScopedConnection.IsValid())
{
FPerforceConnection& Connection = ScopedConnection.GetConnection();
check(InCommand.Operation->GetName() == GetName());
TSharedRef<FCheckIn, ESPMode::ThreadSafe> Operation = StaticCastSharedRef<FCheckIn>(InCommand.Operation);
int32 ChangeList = Connection.CreatePendingChangelist(Operation->GetDescription(), FOnIsCancelled::CreateRaw(&InCommand, &FPerforceSourceControlCommand::IsCanceled), InCommand.ErrorMessages);
if (ChangeList > 0)
{
// Batch reopen into multiple commands, to avoid command line limits
const int32 BatchedCount = 100;
InCommand.bCommandSuccessful = true;
for (int32 StartingIndex = 0; StartingIndex < InCommand.Files.Num() && InCommand.bCommandSuccessful; StartingIndex += BatchedCount)
{
FP4RecordSet Records;
TArray< FString > ReopenParams;
//Add changelist information to params
ReopenParams.Insert(TEXT("-c"), 0);
ReopenParams.Insert(FString::Printf(TEXT("%d"), ChangeList), 1);
int32 NextIndex = FMath::Min(StartingIndex + BatchedCount, InCommand.Files.Num());
for (int32 FileIndex = StartingIndex; FileIndex < NextIndex; FileIndex++)
{
ReopenParams.Add(InCommand.Files[FileIndex]);
}
InCommand.bCommandSuccessful = Connection.RunCommand(TEXT("reopen"), ReopenParams, Records, InCommand.ErrorMessages, FOnIsCancelled::CreateRaw(&InCommand, &FPerforceSourceControlCommand::IsCanceled), InCommand.bConnectionDropped);
}
if (InCommand.bCommandSuccessful)
{
// Only submit if reopen was successful
TArray<FString> SubmitParams;
FP4RecordSet Records;
SubmitParams.Insert(TEXT("-c"), 0);
SubmitParams.Insert(FString::Printf(TEXT("%d"), ChangeList), 1);
InCommand.bCommandSuccessful = Connection.RunCommand(TEXT("submit"), SubmitParams, Records, InCommand.ErrorMessages, FOnIsCancelled::CreateRaw(&InCommand, &FPerforceSourceControlCommand::IsCanceled), InCommand.bConnectionDropped);
if (InCommand.ErrorMessages.Num() > 0)
{
InCommand.bCommandSuccessful = false;
}
if (InCommand.bCommandSuccessful)
{
// Remove any deleted files from status cache
FPerforceSourceControlModule& PerforceSourceControl = FModuleManager::GetModuleChecked<FPerforceSourceControlModule>("PerforceSourceControl");
FPerforceSourceControlProvider& Provider = PerforceSourceControl.GetProvider();
TArray<TSharedRef<ISourceControlState, ESPMode::ThreadSafe>> States;
Provider.GetState(InCommand.Files, States, EStateCacheUsage::Use);
for (const auto& State : States)
{
if (State->IsDeleted())
{
Provider.RemoveFileFromCache(State->GetFilename());
}
}
StaticCastSharedRef<FCheckIn>(InCommand.Operation)->SetSuccessMessage(ParseSubmitResults(Records));
for(auto Iter(InCommand.Files.CreateIterator()); Iter; Iter++)
{
OutResults.Add(*Iter, EPerforceState::ReadOnly);
}
}
}
}
else
{
// Failed to create the changelist
InCommand.bCommandSuccessful = false;
}
}
return InCommand.bCommandSuccessful;
}
开发者ID:AndyHuang7601,项目名称:EpicGames-UnrealEngine,代码行数:84,代码来源:PerforceSourceControlOperations.cpp
示例8: ToolbarBuilder
void FAssetEditorToolkit::GenerateToolbar()
{
TSharedPtr<FExtender> Extender = FExtender::Combine(ToolbarExtenders);
FToolBarBuilder ToolbarBuilder( GetToolkitCommands(), FMultiBoxCustomization::AllowCustomization( GetToolkitFName() ), Extender);
ToolbarBuilder.SetIsFocusable(bIsToolbarFocusable);
ToolbarBuilder.BeginSection("Asset");
{
if( IsActuallyAnAsset() )
{
ToolbarBuilder.AddToolBarButton(FAssetEditorCommonCommands::Get().SaveAsset);
ToolbarBuilder.AddToolBarButton(FGlobalEditorCommonCommands::Get().FindInContentBrowser, NAME_None, LOCTEXT("FindInContentBrowserButton", "Find in CB"));
}
}
ToolbarBuilder.EndSection();
TSharedRef<SHorizontalBox> MiscWidgets = SNew(SHorizontalBox);
for (int32 WidgetIdx = 0; WidgetIdx < ToolbarWidgets.Num(); ++WidgetIdx)
{
MiscWidgets->AddSlot()
.AutoWidth()
.VAlign(VAlign_Center)
.Padding(0.0f, 2.0f, 0.0f, 2.0f)
[
ToolbarWidgets[WidgetIdx]
];
}
Toolbar =
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.HAlign(HAlign_Left)
.VAlign(VAlign_Center)
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.AutoHeight()
.VAlign(VAlign_Bottom)
[
ToolbarBuilder.MakeWidget()
]
]
+SHorizontalBox::Slot()
.HAlign(HAlign_Right)
.VAlign(VAlign_Center)
.AutoWidth()
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.AutoHeight()
.VAlign(VAlign_Bottom)
[
SNew(SBorder)
.BorderImage(FEditorStyle::GetBrush(TEXT("Toolbar.Background")))
.Visibility(ToolbarWidgets.Num() > 0 ? EVisibility::Visible : EVisibility::Collapsed)
[
MiscWidgets
]
]
];
if (ToolbarWidgetContent.IsValid())
{
ToolbarWidgetContent->SetContent(Toolbar.ToSharedRef());
}
}
开发者ID:RandomDeveloperM,项目名称:UE4_Hairworks,代码行数:67,代码来源:AssetEditorToolkit.cpp
示例9: HandleActionClicked
FReply HandleActionClicked(TSharedRef<IChatTip> ChatTip)
{
return ChatTip->ExecuteTip();
}
开发者ID:PickUpSU,项目名称:UnrealEngine4,代码行数:4,代码来源:SChatMarkupTips.cpp
示例10: UnregisterTabSpawners
void FAssetEditorToolkit::UnregisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager)
{
InTabManager->UnregisterTabSpawner( ToolbarTabId );
InTabManager->ClearLocalWorkspaceMenuCategories();
}
开发者ID:RandomDeveloperM,项目名称:UE4_Hairworks,代码行数:5,代码来源:AssetEditorToolkit.cpp
示例11: check
void FAssetEditorToolkit::InitAssetEditor( const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, const FName AppIdentifier, const TSharedRef<FTabManager::FLayout>& StandaloneDefaultLayout, const bool bCreateDefaultStandaloneMenu, const bool bCreateDefaultToolbar, const TArray<UObject*>& ObjectsToEdit, const bool bInIsToolbarFocusable )
{
// Must not already be editing an object
check( ObjectsToEdit.Num() > 0 );
check( EditingObjects.Num() == 0 );
bIsToolbarFocusable = bInIsToolbarFocusable;
// cache reference to ToolkitManager; also ensure it was initialized.
FToolkitManager& ToolkitManager = FToolkitManager::Get();
EditingObjects.Append( ObjectsToEdit );
// Store "previous" asset editing toolkit host, and clear it out
PreviousWorldCentricToolkitHost = PreviousWorldCentricToolkitHostForNewAssetEditor;
PreviousWorldCentricToolkitHostForNewAssetEditor.Reset();
ToolkitMode = Mode;
TSharedPtr<SWindow> ParentWindow;
TSharedPtr<SDockTab> NewMajorTab;
TSharedPtr< SStandaloneAssetEditorToolkitHost > NewStandaloneHost;
if( ToolkitMode == EToolkitMode::WorldCentric ) // @todo toolkit major: Do we need to remember this setting on a per-asset editor basis? Probably.
{
// Keep track of the level editor we're attached to (if any)
ToolkitHost = InitToolkitHost;
}
else if( ensure( ToolkitMode == EToolkitMode::Standalone ) )
{
// Open a standalone app to edit this asset.
check( AppIdentifier != NAME_None );
// Create the label and the link for the toolkit documentation.
TAttribute<FText> Label = TAttribute<FText>( this, &FAssetEditorToolkit::GetToolkitName );
TAttribute<FText> ToolTipText = TAttribute<FText>( this, &FAssetEditorToolkit::GetToolkitToolTipText );
FString DocLink = GetDocumentationLink();
if ( !DocLink.StartsWith( "Shared/" ) )
{
DocLink = FString("Shared/") + DocLink;
}
// Create a new SlateToolkitHost
NewMajorTab = SNew(SDockTab)
.ContentPadding(0.0f)
.TabRole(ETabRole::MajorTab)
.ToolTip(IDocumentation::Get()->CreateToolTip(ToolTipText, nullptr, DocLink, GetToolkitFName().ToString()))
.Icon( this, &FAssetEditorToolkit::GetDefaultTabIcon )
.Label( Label );
{
static_assert(sizeof(EAssetEditorToolkitTabLocation) == sizeof(int32), "EAssetEditorToolkitTabLocation is the incorrect size");
const UEditorStyleSettings* StyleSettings = GetDefault<UEditorStyleSettings>();
// Work out where we should create this asset editor
EAssetEditorToolkitTabLocation SavedAssetEditorToolkitTabLocation = StyleSettings->bOpenAssetEditorTabsInNewWindow ? EAssetEditorToolkitTabLocation::Standalone : EAssetEditorToolkitTabLocation::Docked;
GConfig->GetInt(
TEXT("AssetEditorToolkitTabLocation"),
*ObjectsToEdit[0]->GetPathName(),
reinterpret_cast<int32&>(SavedAssetEditorToolkitTabLocation),
GEditorPerProjectIni
);
const FName AssetEditorToolkitTab = (SavedAssetEditorToolkitTabLocation == EAssetEditorToolkitTabLocation::Docked) ? "DockedToolkit" : "StandaloneToolkit";
FGlobalTabmanager::Get()->InsertNewDocumentTab( AssetEditorToolkitTab, FTabManager::ESearchPreference::PreferLiveTab, NewMajorTab.ToSharedRef() );
}
#if PLATFORM_MAC
TSharedPtr< SEditableTextBox > ExposedEditableTextBox;
TSharedRef<SWidget> SuperSearchWidget = FSuperSearchModule::Get().MakeSearchBox(ExposedEditableTextBox);
#endif
IUserFeedbackModule& UserFeedback = FModuleManager::LoadModuleChecked<IUserFeedbackModule>(TEXT("UserFeedback"));
TSharedRef<SWidget> UserFeedbackWidget = UserFeedback.CreateFeedbackWidget(GetBaseToolkitName());
IIntroTutorials& IntroTutorials = FModuleManager::LoadModuleChecked<IIntroTutorials>(TEXT("IntroTutorials"));
TSharedRef<SWidget> TutorialWidget = IntroTutorials.CreateTutorialsWidget(GetToolkitContextFName(), NewMajorTab->GetParentWindow());
NewMajorTab->SetRightContent(
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
.Padding(8.0f, 0.0f, 0.0f, 0.0f)
.VAlign(VAlign_Center)
[
UserFeedbackWidget
]
#if PLATFORM_MAC
+SHorizontalBox::Slot()
.AutoWidth()
.Padding(16.0f, 0.0f, 0.0f, 0.0f)
.VAlign(VAlign_Center)
[
SuperSearchWidget
]
#endif
+SHorizontalBox::Slot()
.AutoWidth()
//.........这里部分代码省略.........
开发者ID:RandomDeveloperM,项目名称:UE4_Hairworks,代码行数:101,代码来源:AssetEditorToolkit.cpp
示例12: MakeShareable
TSharedRef< FSlateStyleSet > FFriendsAndChatModuleStyle::Create(FFriendsAndChatStyle FriendStyle)
{
TSharedRef< FSlateStyleSet > Style = MakeShareable(new FSlateStyleSet("FriendsAndChatStyle"));
const FTextBlockStyle DefaultText = FTextBlockStyle(FriendStyle.FriendsChatStyle.TextStyle)
.SetFont(FriendStyle.FriendsNormalFontStyle.FriendsFontSmall);
// Name Style
const FTextBlockStyle GlobalChatFont = FTextBlockStyle(DefaultText)
.SetFont(FriendStyle.FriendsNormalFontStyle.FriendsFontNormalBold)
.SetColorAndOpacity(FriendStyle.FriendsChatStyle.GlobalChatColor);
const FTextBlockStyle GameChatFont = FTextBlockStyle(DefaultText)
.SetFont(FriendStyle.FriendsNormalFontStyle.FriendsFontNormalBold)
.SetColorAndOpacity(FriendStyle.FriendsChatStyle.GameChatColor);
const FTextBlockStyle PartyChatFont = FTextBlockStyle(DefaultText)
.SetFont(FriendStyle.FriendsNormalFontStyle.FriendsFontNormalBold)
.SetColorAndOpacity(FriendStyle.FriendsChatStyle.PartyChatColor);
const FTextBlockStyle WhisperChatFont = FTextBlockStyle(DefaultText)
.SetFont(FriendStyle.FriendsNormalFontStyle.FriendsFontNormalBold)
.SetColorAndOpacity(FriendStyle.FriendsChatStyle.WhisplerChatColor);
const FButtonStyle UserNameButton = FButtonStyle()
.SetNormal(FSlateNoResource())
.SetPressed(FSlateNoResource())
.SetHovered(FSlateNoResource());
const FHyperlinkStyle GlobalChatHyperlink = FHyperlinkStyle()
.SetUnderlineStyle(UserNameButton)
.SetTextStyle(GlobalChatFont)
.SetPadding(FMargin(0.0f));
const FHyperlinkStyle GameChatHyperlink = FHyperlinkStyle()
.SetUnderlineStyle(UserNameButton)
.SetTextStyle(GameChatFont)
.SetPadding(FMargin(0.0f));
const FHyperlinkStyle PartyChatHyperlink = FHyperlinkStyle()
.SetUnderlineStyle(UserNameButton)
.SetTextStyle(PartyChatFont)
.SetPadding(FMargin(0.0f));
const FHyperlinkStyle WhisperChatHyperlink = FHyperlinkStyle()
.SetUnderlineStyle(UserNameButton)
.SetTextStyle(WhisperChatFont)
.SetPadding(FMargin(0.0f));
const FHyperlinkStyle DefaultChatHyperlink = FHyperlinkStyle()
.SetUnderlineStyle(UserNameButton)
.SetTextStyle(DefaultText)
.SetPadding(FMargin(0.0f));
Style->Set("UserNameTextStyle.Default", DefaultText);
Style->Set("UserNameTextStyle.GlobalHyperlink", GlobalChatHyperlink);
Style->Set("UserNameTextStyle.GameHyperlink", GameChatHyperlink);
Style->Set("UserNameTextStyle.PartyHyperlink", GameChatHyperlink);
Style->Set("UserNameTextStyle.Whisperlink", WhisperChatHyperlink);
Style->Set("UserNameTextStyle.DefaultHyperlink", DefaultChatHyperlink);
Style->Set("UserNameTextStyle.GlobalTextStyle", GlobalChatFont);
Style->Set("UserNameTextStyle.GameTextStyle", GameChatFont);
Style->Set("UserNameTextStyle.PartyTextStyle", PartyChatFont);
Style->Set("UserNameTextStyle.WhisperTextStyle", WhisperChatFont);
Style->Set("MessageBreak", FTextBlockStyle(DefaultText)
.SetFont(FSlateFontInfo(
FriendStyle.FriendsNormalFontStyle.FriendsFontSmall.FontObject,
6,
FriendStyle.FriendsNormalFontStyle.FriendsFontSmall.TypefaceFontName
)));
Style->Set("GlobalChatIcon", FInlineTextImageStyle()
.SetImage(FriendStyle.FriendsChatStyle.ChatGlobalBrush)
.SetBaseline(0));
Style->Set("WhisperChatIcon", FInlineTextImageStyle()
.SetImage(FriendStyle.FriendsChatStyle.ChatWhisperBrush)
.SetBaseline(0));
Style->Set("PartyChatIcon", FInlineTextImageStyle()
.SetImage(FriendStyle.FriendsChatStyle.ChatGameBrush)
.SetBaseline(0));
return Style;
}
开发者ID:PickUpSU,项目名称:UnrealEngine4,代码行数:87,代码来源:FriendsAndChatStyle.cpp
示例13: FApplicationMode
FSkeletonEditorMode::FSkeletonEditorMode(TSharedRef<FWorkflowCentricApplication> InHostingApp, TSharedRef<ISkeletonTree> InSkeletonTree)
: FApplicationMode(SkeletonEditorModes::SkeletonEditorMode)
{
HostingAppPtr = InHostingApp;
TSharedRef<FSkeletonEditor> SkeletonEditor = StaticCastSharedRef<FSkeletonEditor>(InHostingApp);
ISkeletonEditorModule& SkeletonEditorModule = FModuleManager::LoadModuleChecked<ISkeletonEditorModule>("SkeletonEditor");
TabFactories.RegisterFactory(SkeletonEditorModule.CreateSkeletonTreeTabFactory(InHostingApp, InSkeletonTree));
FPersonaModule& PersonaModule = FModuleManager::LoadModuleChecked<FPersonaModule>("Persona");
TabFactories.RegisterFactory(PersonaModule.CreateDetailsTabFactory(InHostingApp, FOnDetailsCreated::CreateSP(&SkeletonEditor.Get(), &FSkeletonEditor::HandleDetailsCreated)));
TabFactories.RegisterFactory(PersonaModule.CreatePersonaViewportTabFactory(InHostingApp, InSkeletonTree, SkeletonEditor->GetPersonaToolkit()->GetPreviewScene(), SkeletonEditor->OnPostUndo, nullptr, FOnViewportCreated(), true, true));
TabFactories.RegisterFactory(PersonaModule.CreateAnimNotifiesTabFactory(InHostingApp, InSkeletonTree->GetEditableSkeleton(), SkeletonEditor->OnChangeAnimNotifies, SkeletonEditor->OnPostUndo, FOnObjectsSelected::CreateSP(&SkeletonEditor.Get(), &FSkeletonEditor::HandleObjectsSelected)));
TabFactories.RegisterFactory(PersonaModule.CreateAdvancedPreviewSceneTabFactory(InHostingApp, SkeletonEditor->GetPersonaToolkit()->GetPreviewScene()));
TabFactories.RegisterFactory(PersonaModule.CreateRetargetManagerTabFactory(InHostingApp, InSkeletonTree->GetEditableSkeleton(), SkeletonEditor->GetPersonaToolkit()->GetPreviewScene(), SkeletonEditor->OnPostUndo));
TabFactories.RegisterFactory(PersonaModule.CreateCurveViewerTabFactory(InHostingApp, InSkeletonTree->GetEditableSkeleton(), SkeletonEditor->GetPersonaToolkit()->GetPreviewScene(), SkeletonEditor->OnCurvesChanged, SkeletonEditor->OnPostUndo));
TabFactories.RegisterFactory(PersonaModule.CreateSkeletonSlotNamesTabFactory(InHostingApp, InSkeletonTree->GetEditableSkeleton(), SkeletonEditor->OnPostUndo, FOnObjectSelected::CreateSP(&SkeletonEditor.Get(), &FSkeletonEditor::HandleObjectSelected)));
TabLayout = FTabManager::NewLayout("Standalone_SkeletonEditor_Layout_v1.1")
->AddArea
(
FTabManager::NewPrimaryArea()
->SetOrientation(Orient_Vertical)
->Split
(
FTabManager::NewStack()
->SetSizeCoefficient(0.1f)
->SetHideTabWell(true)
->AddTab(InHostingApp->GetToolbarTabId(), ETabState::OpenedTab)
)
->Split
(
FTabManager::NewSplitter()
->SetSizeCoefficient(0.9f)
->SetOrientation(Orient_Horizontal)
->Split
(
FTabManager::NewStack()
->SetSizeCoefficient(0.2f)
->SetHideTabWell(true)
->AddTab(SkeletonEditorTabs::SkeletonTreeTab, ETabState::OpenedTab)
->AddTab(SkeletonEditorTabs::RetargetManagerTab, ETabState::ClosedTab)
)
->Split
(
FTabManager::NewStack()
->SetSizeCoefficient(0.6f)
->SetHideTabWell(true)
->AddTab(SkeletonEditorTabs::ViewportTab, ETabState::OpenedTab)
)
->Split
(
FTabManager::NewSplitter()
->SetSizeCoefficient(0.2f)
->SetOrientation(Orient_Vertical)
->Split
(
FTabManager::NewStack()
->SetSizeCoefficient(0.5f)
->SetHideTabWell(false)
->AddTab(SkeletonEditorTabs::DetailsTab, ETabState::OpenedTab)
->AddTab(SkeletonEditorTabs::AdvancedPreviewTab, ETabState::ClosedTab)
)
->Split
(
FTabManager::NewStack()
->SetSizeCoefficient(0.5f)
->SetHideTabWell(false)
->AddTab(SkeletonEditorTabs::AnimNotifiesTab, ETabState::OpenedTab)
->AddTab(SkeletonEditorTabs::CurveNamesTab, ETabState::OpenedTab)
->AddTab(SkeletonEditorTabs::SlotNamesTab, ETabState::ClosedTab)
)
)
)
);
}
开发者ID:zhaoyizheng0930,项目名称:UnrealEngine,代码行数:77,代码来源:SkeletonEditorMode.cpp
示例14: LogGetPackageLinkerError
static void LogGetPackageLinkerError(FArchiveUObject* LinkerArchive, const TCHAR* InFilename, const FText& InFullErrorMessage, const FText& InSummaryErrorMessage, UObject* InOuter, uint32 LoadFlags)
{
static FName NAME_LoadErrors("LoadErrors");
struct Local
{
/** Helper function to output more detailed error info if available */
static void OutputErrorDetail(FArchiveUObject* LinkerArchive, const FName& LogName)
{
if ( GSerializedObject && GSerializedImportLinker )
{
FMessageLog LoadErrors(LogName);
TSharedRef<FTokenizedMessage> Message = LoadErrors.Info();
Message->AddToken(FTextToken::Create(LOCTEXT("FailedLoad_Message", "Failed to load")));
Message->AddToken(FAssetNameToken::Create(GSerializedImportLinker->GetImportPathName(GSerializedImportIndex)));
Message->AddToken(FTextToken::Create(LOCTEXT("FailedLoad_Referenced", "Referenced by")));
Message->AddToken(FUObjectToken::Create(GSerializedObject));
auto SerializedProperty = LinkerArchive ? LinkerArchive->GetSerializedProperty() : nullptr;
if (SerializedProperty != nullptr)
{
FString PropertyPathName = SerializedProperty->GetPathName();
Message->AddToken(FTextToken::Create(LOCTEXT("FailedLoad_Property", "Property")));
Message->AddToken(FAssetNameToken::Create(PropertyPathName, FText::FromString( PropertyPathName) ) );
}
}
}
};
FMessageLog LoadErrors(NAME_LoadErrors);
// Display log error regardless LoadFlag settings
SET_WARN_COLOR(COLOR_RED);
if (LoadFlags & LOAD_NoWarn)
{
UE_LOG(LogLinker, Log, TEXT("%s"), *InFullErrorMessage.ToString());
}
else
{
UE_LOG(LogLinker, Warning, TEXT("%s"), *InFullErrorMessage.ToString());
}
CLEAR_WARN_COLOR();
if( GIsEditor && !IsRunningCommandlet() )
{
// if we don't want to be warned, skip the load warning
if (!(LoadFlags & LOAD_NoWarn))
{
// we only want to output errors that content creators will be able to make sense of,
// so any errors we cant get links out of we will just let be output to the output log (above)
// rather than clog up the message log
if(InFilename != NULL && InOuter != NULL)
{
// Output the summary error & the filename link. This might be something like "..\Content\Foo.upk Out of Memory"
TSharedRef<FTokenizedMessage> Message = LoadErrors.Error();
Message->AddToken(FAssetNameToken::Create(FPackageName::FilenameToLongPackageName(InFilename)));
Message->AddToken(FTextToken::Create(FText::FromString(TEXT(":"))));
Message->AddToken(FTextToken::Create(InSummaryErrorMessage));
Message->AddToken(FAssetNameToken::Create(FPackageName::FilenameToLongPackageName(InOuter->GetPathName())));
}
Local::OutputErrorDetail(LinkerArchive, NAME_LoadErrors);
}
}
else
{
if (!(LoadFlags & LOAD_NoWarn))
{
Local::OutputErrorDetail(LinkerArchive, NAME_LoadErrors);
}
FFormatNamedArguments Arguments;
Arguments.Add(TEXT("FileName"), FText::FromString(InFilename ? InFilename : InOuter ? *InOuter->GetName() : TEXT("NULL")));
Arguments.Add(TEXT("ErrorMessage"), InFullErrorMessage);
const FText Error = FText::Format(LOCTEXT("FailedLoad", "Failed to load '{FileName}': {ErrorMessage}"), Arguments);
// @see ResavePackagesCommandlet
if( FParse::Param(FCommandLine::Get(),TEXT("SavePackagesThatHaveFailedLoads")) == true )
{
LoadErrors.Warning(Error);
}
else
{
// Gracefully handle missing packages
SafeLoadError( InOuter, LoadFlags, *InFullErrorMessage.ToString(), *Error.ToString() );
}
}
}
开发者ID:kidaa,项目名称:UnrealEngineVR,代码行数:87,代码来源:Linker.cpp
示例15: Construct
/**
* Construct the widget
*
* @param InDeclaration A declaration from which to construct the widget
*/
void Construct( const STableColumnHeader::FArguments& InArgs, const SHeaderRow::FColumn& Column, const FMargin DefaultHeaderContentPadding )
{
check(InArgs._Style);
SWidget::Construct( InArgs._ToolTipText, InArgs._ToolTip, InArgs._Cursor, InArgs._IsEnabled, InArgs._Visibility, InArgs._RenderTransform, InArgs._RenderTransformPivot, InArgs._Tag, InArgs._ForceVolatile, InArgs.MetaData );
Style = InArgs._Style;
ColumnId = Column.ColumnId;
SortMode = Column.SortMode;
SortPriority = Column.SortPriority;
OnSortModeChanged = Column.OnSortModeChanged;
ContextMenuContent = Column.HeaderMenuContent.Widget;
ComboVisibility = Column.HeaderComboVisibility;
FMargin AdjustedDefaultHeaderContentPadding = DefaultHeaderContentPadding;
TAttribute< FText > LabelText = Column.DefaultText;
TAttribute< FText > TooltipText = Column.DefaultTooltip;
if (Column.HeaderContent.Widget == SNullWidget::NullWidget)
{
if (!Column.DefaultText.IsSet())
{
LabelText = FText::FromString( Column.ColumnId.ToString() + TEXT("[LabelMissing]") );
}
if (!Column.DefaultTooltip.IsSet())
{
TooltipText = LabelText;
}
}
TSharedPtr< SHorizontalBox > Box;
TSharedRef< SOverlay > Overlay = SNew( SOverlay );
Overlay->AddSlot( 0 )
[
SAssignNew( Box, SHorizontalBox )
];
TSharedRef< SWidget > PrimaryContent = Column.HeaderContent.Widget;
if ( PrimaryContent == SNullWidget::NullWidget )
{
PrimaryContent =
SNew( SBox )
.Padding( OnSortModeChanged.IsBound() ? FMargin( 0, 2, 0, 2 ) : FMargin( 0, 4, 0, 4 ) )
.VAlign( VAlign_Center )
[
SNew(STextBlock)
.Text( LabelText )
.ToolTipText( TooltipText )
];
}
if ( OnSortModeChanged.IsBound() )
{
//optional main button with the column's title. Used to toggle sorting modes.
PrimaryContent = SNew(SButton)
.ButtonStyle( FCoreStyle::Get(), "NoBorder" )
.ForegroundColor( FSlateColor::UseForeground() )
.ContentPadding( FMargin( 0, 2, 0, 2 ) )
.OnClicked(this, &STableColumnHeader::OnTitleClicked)
[
PrimaryContent
];
}
Box->AddSlot()
.FillWidth(1.0f)
[
PrimaryContent
];
if( Column.HeaderMenuContent.Widget != SNullWidget::NullWidget )
{
// Add Drop down menu button (only if menu content has been specified)
Box->AddSlot()
.AutoWidth()
[
SAssignNew( MenuOverlay, SOverlay )
.Visibility( this, &STableColumnHeader::GetMenuOverlayVisibility )
+SOverlay::Slot()
[
SNew( SSpacer )
.Size( FVector2D( 12.0f, 0 ) )
]
+SOverlay::Slot()
.Padding(FMargin(0,1,0,1))
[
SNew( SBorder )
.Padding( FMargin( 0, 0, AdjustedDefaultHeaderContentPadding.Right, 0 ) )
.BorderImage( this, &STableColumnHeader::GetComboButtonBorderBrush )
//.........这里部分代码省略.........
开发者ID:zhaoyizheng0930,项目名称:UnrealEngine,代码行数:101,代码来源:SHeaderRow.cpp
-
六六分期app的软件客服如何联系?不知道吗?加qq群【895510560】即可!标题:六六分期
阅读:18213|2023-10-27
-
今天小编告诉大家如何处理win10系统火狐flash插件总是崩溃的问题,可能很多用户都不知
阅读:9656|2022-11-06
-
今天小编告诉大家如何对win10系统删除桌面回收站图标进行设置,可能很多用户都不知道
阅读:8168|2022-11-06
-
今天小编告诉大家如何对win10系统电脑设置节能降温的设置方法,想必大家都遇到过需要
阅读:8543|2022-11-06
-
我们在使用xp系统的过程中,经常需要对xp系统无线网络安装向导设置进行设置,可能很多
阅读:8449|2022-11-06
-
今天小编告诉大家如何处理win7系统玩cf老是与主机连接不稳定的问题,可能很多用户都不
阅读:9375|2022-11-06
-
电脑对日常生活的重要性小编就不多说了,可是一旦碰到win7系统设置cf烟雾头的问题,很
阅读:8418|2022-11-06
-
我们在日常使用电脑的时候,有的小伙伴们可能在打开应用的时候会遇见提示应用程序无法
阅读:7855|2022-11-06
-
今天小编告诉大家如何对win7系统打开vcf文件进行设置,可能很多用户都不知道怎么对win
阅读:8403|2022-11-06
-
今天小编告诉大家如何对win10系统s4开启USB调试模式进行设置,可能很多用户都不知道怎
阅读:7391|2022-11-06
|
请发表评论