I’ve started working on a customized details panel module for some of the classes in my project. After some reading and a really great tutorial video I was able to get the first test up and running. I had a category with some variables included in it display on the details panel. I then decided I wanted to include subcategories, which was briefly mentioned in the video I watched. Instead of “CatName” I tried something like “CatName|SubCatName”, but the details only showed another main category with the name “CatName|SubCatName”. It appears the pipe | operator is not being recognized or I am doing something wrong. If I try to use an escape operator \ in it fails to compile.I managed to do a cheap work around for now where I add the main category in, and just add in groups, but I would really like to know why the subcategories are not working for me.
Thank you!
This is an old Thread, but I encountered the same problem today. If I customize a Property in a SubCategory, the Property will be added in a new Category called Category|Subcategory.
I tried different implementations, all with the same result. Directly by calling DetailLayoutBuilder.EditCategory("Category|Subcategory") and then DetailCategoryBuilder.AddProperty(TSharedRef<IPropertyHandle> PropertyHandle) or DetailLayoutBuilder.AddPropertyToCategory(TSharedRef<IPropertyHandle> PropertyHandle)
Is there a way how you should handle this? If not and this is a bug I will create a Bug report later on.

Hi there,
I just wrote a comment having this issue, but I found a (partial) Solution for this.
If you only want to edit Properties which already exist in the class you creating the DetailCustomization for,
you can use
IDetailPropertyRow* IDetailLayoutBuilder::EditDefaultProperty(TSharedPtr<IPropertyHandle> InPropertyHandle).
Then you can Customize the Property as usual.
Hope this helps someone a little further
Well, I ran into the same problem recently. After digging into the code a bit, I found that categories set through UPROPERTY are split into DefaultCategoryMap and SubCategoryMap, and the engine handles them differently. Everything that is not set by default and added through customization goes into CustomCategoryMap. It turns out that subcategories are not actually regular categories, they are groups.
So, if you want to add a subcategory, you have to use AddGroup and provide a display name as the second parameter. Something like this:
auto& CategoryBuilder = DetailBuilder.EditCategory(TEXT("SomeCategory"));
FName GroupName = TEXT("SubCategory");
auto& Group = CategoryBuilder.AddGroup(GroupName, FText::FromName(GroupName), false, true);
Then you can add properties to your group, and they will appear under a subcategory. I still haven’t figured out how to properly edit existing subcategories ;D
