ListView Doesn’t Respone When Click and Entry Widget Doesn’t Print UImage C++
Sorry For My English And Thank You For Your Answer
Here Is My Item Class Code
UCLASS()
class UCreateCharacterPresetData : public UObject
{
GENERATED_BODY()
public:
UPROPERTY()
UTexture2D* PresetImage2DTexture;
FString PresetName = "Sample";
};
Here Is My EntryWidget Code (PresetImage Is Uimage Instance)
void UCreateCharacterUserWidgetEntry::NativeOnListItemObjectSet(UObject* Obj)
{
//이거 나중에 위젯에서 데이터 정리해야함
UCreateCharacterPresetData* PresetData = Cast<UCreateCharacterPresetData>(Obj);
if (IsValid(PresetData))
{
NameTextBlock->SetText(FText::FromString(PresetData->PresetName));
PresetImage->SetBrushFromTexture(PresetData->PresetImage2DTexture);
PresetImage->SetVisibility(ESlateVisibility::Visible);
UE_LOG(LogTemp, Warning, TEXT("Entry Set Success"));
}
else
UE_LOG(LogTemp, Error, TEXT("Entry Set Fail"));
}
void UCreateCharacterUserWidgetEntry::NativeOnItemSelectionChanged(bool bIsSelected)
{
// 형광 연두색으로 설정하기 위한 FLinearColor 생성
FLinearColor FluorescentGreenColor = FLinearColor(0.0f, 1.0f, 0.0f, 1.0f);
// UImage 위젯의 ColorAndOpacity 속성 설정
BackgroundImage->SetColorAndOpacity(FluorescentGreenColor);
BackgroundImage->SetVisibility(bIsSelected ? ESlateVisibility::Visible : ESlateVisibility::Hidden);
UE_LOG(LogTemp, Warning, TEXT("Entry Selection Changed"));
}
Here Is Part Of My UserWidget(Include ListView Component) Code
void UCreateCharacterUserWidget::NativeConstruct()
{
Super::NativeConstruct();
if (OKButton)
{
OKButton->OnClicked.AddDynamic(this, &UCreateCharacterUserWidget::OnOKButtonClick);
}
if (GenderButton)
{
GenderButton->OnClicked.AddDynamic(this, &UCreateCharacterUserWidget::OnGenderButtonClick);
}
if (NickNameEditTextBox)
{
NickNameEditTextBox->SetSelectAllTextWhenFocused(true);
}
if (CharacterPresetListView)
{
CharacterPresetListView->SetSelectionMode(ESelectionMode::Single);
for (int i = 0; i < PresetImageMaterialList.Num(); ++i)
{
UCreateCharacterPresetData* PresetData = NewObject<UCreateCharacterPresetData>();
PresetData->PresetName = PresetNameList[i];
PresetData->PresetImage2DTexture = PresetImageMaterialList[i];
PresetDataList.Add(PresetData);
}
CharacterPresetListView->SetListItems(PresetDataList);
CharacterPresetListView->OnItemClicked().AddUObject(this, &UCreateCharacterUserWidget::OnListItemClick);
UE_LOG(LogTemp, Warning, TEXT("CharacterPresetListView OnItemClicked"));
}
if (CharacterImage)
{
CharacterImage->SetVisibility(ESlateVisibility::Hidden);
}
}
void UCreateCharacterUserWidget::OnListItemClick(UObject* Obj)
{
UE_LOG(LogTemp, Warning, TEXT("OnListItemClick Start"));
//여기서 Obj가 위에 SetListItems에서 넣은 데이터중 1개임
if (CharacterImage)
{
CharacterImage->SetVisibility(ESlateVisibility::Hidden);
UE_LOG(LogTemp, Warning, TEXT("OnListItemClick Image Hidden"));
}
UCreateCharacterPresetData* PresetData = Cast<UCreateCharacterPresetData>(Obj);
if (PresetData)
{
FSlateBrush MyBrush;
UE_LOG(LogTemp, Warning, TEXT("OnListItem Cast Success"));
if (CharacterImage)
{
MyBrush.SetResourceObject(PresetData->PresetImage2DTexture);
CharacterImage->SetBrush(MyBrush);
CharacterImage->SetVisibility(ESlateVisibility::Visible);
UE_LOG(LogTemp, Warning, TEXT("OnListItemClick Image Visible"));
}
}
UE_LOG(LogTemp, Warning, TEXT("OnListItemClick Finish"));
}
I Dont Know Why ListView Does Not Respone When I Click That
And Entry Widget Print Text Well, But Entry Widget Does Not Print Image
(I Assigned Texture Through Blueprint)
I’d Appreciate It If You Could Tell Me How To Solve It