69 lines
1.8 KiB
C++
69 lines
1.8 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Blueprint/UserWidget.h"
|
|
#include "PHYAttributePageWidget.generated.h"
|
|
|
|
class UPHYAttributeGroupWidget;
|
|
class UScrollBox;
|
|
class UTextBlock;
|
|
class UVerticalBox;
|
|
|
|
/**
|
|
* @brief 属性分页子控件。
|
|
*
|
|
* 分页只负责标题和分组容器,具体属性项由分组和属性行子控件承载。
|
|
*/
|
|
UCLASS(BlueprintType, Blueprintable)
|
|
class PHY_API UPHYAttributePageWidget : public UUserWidget
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
/** @brief 构造属性分页控件。 */
|
|
UPHYAttributePageWidget(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
|
|
|
|
/** @brief 构建原生分页 WidgetTree。 */
|
|
virtual TSharedRef<SWidget> RebuildWidget() override;
|
|
|
|
/** @brief 同步分页显示。 */
|
|
virtual void SynchronizeProperties() override;
|
|
|
|
/** @brief 设置分页标题。 */
|
|
UFUNCTION(BlueprintCallable, Category="PHY|UI|Attributes")
|
|
void SetPageTitle(FText InPageTitle);
|
|
|
|
/** @brief 清理当前分页内所有分组。 */
|
|
UFUNCTION(BlueprintCallable, Category="PHY|UI|Attributes")
|
|
void ClearGroups();
|
|
|
|
/** @brief 添加一个属性分组。 */
|
|
UFUNCTION(BlueprintCallable, Category="PHY|UI|Attributes")
|
|
UPHYAttributeGroupWidget* AddGroup(FText GroupTitle);
|
|
|
|
protected:
|
|
/** @brief 构造原生分页树。 */
|
|
void BuildNativeWidgetTree();
|
|
|
|
/** @brief 刷新分页标题。 */
|
|
void UpdatePageWidgets();
|
|
|
|
/** @brief 分页标题。 */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="PHY|UI|Attributes")
|
|
FText PageTitle;
|
|
|
|
/** @brief 标题文本。 */
|
|
UPROPERTY(Transient)
|
|
TObjectPtr<UTextBlock> TitleText;
|
|
|
|
/** @brief 分组滚动区域。 */
|
|
UPROPERTY(Transient)
|
|
TObjectPtr<UScrollBox> GroupsScrollBox;
|
|
|
|
/** @brief 分组容器。 */
|
|
UPROPERTY(Transient)
|
|
TObjectPtr<UVerticalBox> GroupsBox;
|
|
};
|