Setting Text of a textblock before construct crashes Engine

Hi, I have a custom widget which contains a custom button sub-widget.
When trying to setText of the sub-widget textblock before adding the parent widget to viewport it crashes Engine.

The SubWidget:

void UButtonSubWidget::InitializeButton(FText text, UTexture2D* image)
{
    if(!text.IsEmpty())
    {
        ButtonText->SetText(text);
    }
    if(image)
    {
        ButtonImage->SetBrushFromTexture(image);
    }
}

The ParentWidget:

void UInspectionWidget::InitializeInspection(FText name, FText description, TArray<UTexture2D*> imagesButton, TArray<FText> textButton, bool bInpsecting)
{
    if(bInpsecting)
    {
        Background->SetVisibility(ESlateVisibility::Hidden);
        Capture->SetVisibility(ESlateVisibility::Hidden);
        Inventory->SetVisibility(ESlateVisibility::Hidden);
    }
    ItemName->SetText(name);
    for(int i = 0; i < Buttons.Num(); i++)
    {
        if (imagesButton[i] == nullptr)
        {
            Buttons[i]->SetVisibility(ESlateVisibility::Hidden);
            break;
        }
        Buttons[i]->InitializeButton(textButton[i], imagesButton[i]);
    }
}

The Engine says it crashes on “ButtonText->SetText(text);”, why is this happening? Is something wrong with my approach?

Thanks.

So, I found out the problem on parentWidget. The Buttons is suppose to be a TArray<class UButtonSubWidget*> Buttons but for some reason after declaring them on blueprint and hitting compile it deletes every Button sub-widget i declered on the array. So the problem was that Buttons were size of 0.

1 Like