在 Unreal Engine 的 C++ 中,UsernameTextBox->GetText(); 是用于获取可编辑文本框(UEditableTextBox)当前输入内容的方法。这在需要获取用户输入(如用户名、密码、聊天内容等)的场景中非常常用。

详细解析

  • UsernameTextBox:通常是一个 UEditableTextBox* 类型的指针,指向 UMG 蓝图中创建的可编辑文本框控件(需提前通过 BindWidget 或 GetWidgetFromName 绑定)。
  • GetText()UEditableTextBox 类的成员函数,返回值为 FText 类型(UE 中用于显示的本地化文本类型),表示文本框当前的内容。

典型用法

以登录界面为例,获取用户输入的用户名并处理:

cpp

运行

// 假设已通过 BindWidget 或 GetWidgetFromName 绑定了 UsernameTextBox
UPROPERTY(meta = (BindWidget))
UEditableTextBox* UsernameTextBox;

// 在登录按钮点击事件中获取用户名
void ULoginWidget::OnLoginClicked()
{
    if (UsernameTextBox)
    {
        // 获取文本框内容(FText 类型)
        FText UsernameText = UsernameTextBox->GetText();
        
        // 转换为 FString 类型(便于字符串处理,如网络传输、验证等)
        FString Username = UsernameText.ToString();
        
        // 处理用户名(如验证非空、发送到服务器等)
        if (Username.IsEmpty())
        {
            UE_LOG(LogTemp, Warning, TEXT("用户名不能为空!"));
        }
        else
        {
            UE_LOG(LogTemp, Log, TEXT("用户输入的用户名:%s"), *Username);
            // 执行登录逻辑...
        }
    }
}

关键注意点

  1. 类型转换
    GetText() 返回的 FText 主要用于 UI 显示(支持本地化),若需要进行字符串处理(如判断为空、拼接、网络传输等),需通过 ToString() 转换为 FString 类型。

  2. 空指针检查
    调用前必须确保 UsernameTextBox 指针有效(非 nullptr),否则会导致崩溃。通常通过 if (UsernameTextBox) 进行检查。

  3. 与密码框的区别
    若文本框是密码框(PasswordTextBox),GetText() 同样适用,但需注意在 UI 蓝图中开启 "Is Password" 属性(输入内容会显示为圆点或星号),但 GetText() 仍能获取真实内容。

  4. 实时获取输入
    若需要实时监听文本变化(如输入时即时验证),可绑定 UEditableTextBox 的 OnTextChanged 委托:

    cpp

    运行

    // 在 NativeConstruct 中绑定文本变化事件
    void ULoginWidget::NativeConstruct()
    {
        Super::NativeConstruct();
        if (UsernameTextBox)
        {
            UsernameTextBox->OnTextChanged.AddDynamic(this, &ULoginWidget::OnUsernameTextChanged);
        }
    }
    
    // 文本变化时触发
    void ULoginWidget::OnUsernameTextChanged(const FText& NewText)
    {
        FString CurrentInput = NewText.ToString();
        UE_LOG(LogTemp, Log, TEXT("当前输入:%s"), *CurrentInput);
        // 实时验证逻辑(如限制长度、禁止特殊字符等)
    }
    

    总结:UsernameTextBox->GetText(); 是获取用户输入文本的核心方法,结合 FText 到 FString 的转换,可满足大多数输入处理需求,是 UI 交互逻辑中的基础操作。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐