vault backup: 2024-10-12 17:19:45
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# ReadOnlyKeys
|
||||
|
||||
- **功能描述:** 使TMap属性的Key不能编辑。
|
||||
- **使用位置:** UPROPERTY
|
||||
- **引擎模块:** Container Property
|
||||
- **元数据类型:** bool
|
||||
- **限制类型:** TMap属性
|
||||
- **常用程度:** ★★
|
||||
|
||||
使TMap属性的Key不能编辑。
|
||||
|
||||
意味着这个TMap里的元素是在这之前(构造函数里初始化等)就设置好的,但我们只希望用户更改值的内容,而不改Key的名字。这在某些情况下比较有用,比如以Platform作为Key,这样Platform的列表是固定的就不希望用户更改了。
|
||||
|
||||
## 测试代码:
|
||||
|
||||
```cpp
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = ReadOnlyKeysTest)
|
||||
TMap<int32, FString> MyIntMap_NoReadOnlyKeys;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = ReadOnlyKeysTest, meta = (ReadOnlyKeys))
|
||||
TMap<int32, FString> MyIntMap_ReadOnlyKeys;
|
||||
```
|
||||
|
||||
## 测试结果:
|
||||
|
||||
可见MyIntMap_ReadOnlyKeys的Key是灰色的,不可编辑。
|
||||
|
||||

|
||||
|
||||
## 源码里搜到:
|
||||
|
||||
```cpp
|
||||
void FDetailPropertyRow::MakeNameOrKeyWidget( FDetailWidgetRow& Row, const TSharedPtr<FDetailWidgetRow> InCustomRow ) const
|
||||
{
|
||||
if (PropertyHandle->HasMetaData(TEXT("ReadOnlyKeys")))
|
||||
{
|
||||
PropertyKeyEditor->GetPropertyNode()->SetNodeFlags(EPropertyNodeFlags::IsReadOnly, true);
|
||||
}
|
||||
}
|
||||
```
|
Reference in New Issue
Block a user