I tried:
FSlateApplication::Get().SetKeyboardFocus(InputWidget,EFocusCause::SetDirectly);
However it did not work QAQ
I tried:
FSlateApplication::Get().SetKeyboardFocus(InputWidget,EFocusCause::SetDirectly);
However it did not work QAQ
Finally I reference the code of SAssetPicker.cpp
if ( InArgs._AssetPickerConfig.bFocusSearchBoxWhenOpened )
{
RegisterActiveTimer( 0.f, FWidgetActiveTimerDelegate::CreateSP( this, &SAssetPicker::SetFocusPostConstruct ) );
}
And In SetFocusPostConstruct :
EActiveTimerReturnType SAssetPicker::SetFocusPostConstruct( double InCurrentTime, float InDeltaTime )
{
if ( SearchBoxPtr.IsValid() )
{
FWidgetPath WidgetToFocusPath;
FSlateApplication::Get().GeneratePathToWidgetUnchecked( SearchBoxPtr.ToSharedRef(), WidgetToFocusPath );
FSlateApplication::Get().SetKeyboardFocus( WidgetToFocusPath, EFocusCause::SetDirectly );
WidgetToFocusPath.GetWindow()->SetWidgetToFocusOnActivate(SearchBoxPtr);
return EActiveTimerReturnType::Stop;
}
return EActiveTimerReturnType::Continue;
}
It works.