UE4+C++开发-(二十四)用于获取可编辑文本框(UEditableTextBox)当前输入内容的方法 UsernameTextBox->GetText();
·
在 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);
// 执行登录逻辑...
}
}
}
关键注意点
-
类型转换
GetText()返回的FText主要用于 UI 显示(支持本地化),若需要进行字符串处理(如判断为空、拼接、网络传输等),需通过ToString()转换为FString类型。 -
空指针检查
调用前必须确保UsernameTextBox指针有效(非nullptr),否则会导致崩溃。通常通过if (UsernameTextBox)进行检查。 -
与密码框的区别
若文本框是密码框(PasswordTextBox),GetText()同样适用,但需注意在 UI 蓝图中开启 "Is Password" 属性(输入内容会显示为圆点或星号),但GetText()仍能获取真实内容。 -
实时获取输入
若需要实时监听文本变化(如输入时即时验证),可绑定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 交互逻辑中的基础操作。
更多推荐

所有评论(0)