Create custom button widget

This commit is contained in:
baz 2025-08-23 04:22:50 +01:00
parent c50d32c3bd
commit 784a373c33
4 changed files with 142 additions and 0 deletions

BIN
Content/Widgets/BP_CustomButton.uasset (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,16 @@
// Louis Hobbs | 2024-2025
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "DetectGamepad.generated.h"
/**
*
*/
UCLASS()
class VAMPIRES_API UDetectGamepad : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
};

View File

@ -0,0 +1,52 @@
// Louis Hobbs | 2024-2025
#include "CustomButton.h"
#include "Components/Button.h"
#include "Components/TextBlock.h"
void UCustomButton::NativeConstruct()
{
Super::NativeConstruct();
ButtonBody->OnClicked.AddUniqueDynamic(this, &UCustomButton::OnButtonClicked);
ButtonBody->OnPressed.AddUniqueDynamic(this, &UCustomButton::OnButtonPressed);
ButtonBody->OnReleased.AddUniqueDynamic(this, &UCustomButton::OnButtonReleased);
ButtonBody->OnHovered.AddUniqueDynamic(this, &UCustomButton::OnButtonHovered);
ButtonBody->OnUnhovered.AddUniqueDynamic(this, &UCustomButton::OnButtonHovered);
TextBlock->SetText(ButtonText);
}
void UCustomButton::SynchronizeProperties()
{
Super::SynchronizeProperties();
TextBlock->SetText(ButtonText);
}
TObjectPtr<UTextBlock> UCustomButton::GetTextBlock()
{
return TextBlock;
}
void UCustomButton::OnButtonClicked()
{
OnClicked.Broadcast();
}
void UCustomButton::OnButtonPressed()
{
OnPressed.Broadcast();
}
void UCustomButton::OnButtonReleased()
{
OnReleased.Broadcast();
}
void UCustomButton::OnButtonHovered()
{
OnHovered.Broadcast();
}

View File

@ -0,0 +1,71 @@
// Louis Hobbs | 2024-2025
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "CustomButton.generated.h"
class UTextBlock;
class UButton;
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnButtonClickedEventCustom);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnButtonPressedEventCustom);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnButtonReleasedEventCustom);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnButtonHoverEventCustom);
/**
*
*/
UCLASS()
class VAMPIRES_API UCustomButton : public UUserWidget
{
GENERATED_BODY()
public:
UPROPERTY(BlueprintAssignable)
FOnButtonClickedEventCustom OnClicked;
UPROPERTY(BlueprintAssignable)
FOnButtonPressedEventCustom OnPressed;
UPROPERTY(BlueprintAssignable)
FOnButtonReleasedEventCustom OnReleased;
UPROPERTY(BlueprintAssignable)
FOnButtonHoverEventCustom OnHovered;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
FText ButtonText = FText::FromString("Default");
private:
UPROPERTY(meta = (BindWidget))
TObjectPtr<UButton> ButtonBody;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UTextBlock> TextBlock;
protected:
virtual void NativeConstruct() override;
virtual void SynchronizeProperties() override;
public:
TObjectPtr<UTextBlock> GetTextBlock();
private:
UFUNCTION()
void OnButtonClicked();
UFUNCTION()
void OnButtonPressed();
UFUNCTION()
void OnButtonReleased();
UFUNCTION()
void OnButtonHovered();
};