> For the complete documentation index, see [llms.txt](https://stylizededge-devs.gitbook.io/aqs-doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://stylizededge-devs.gitbook.io/aqs-doc/building-menus/grouping-and-ordering.md).

# Grouping & Ordering Rows

By default, rows render in reflection declaration order with no section headers. If you want your menu organized into named sections — "Lighting," "Shadows," "Post Processing" — and a specific row order within and between those sections, this page covers it.

This is purely a developer-authoring feature. Players never drag or reorder anything themselves; you decide the layout once, bake it, and every player sees the same organized arrangement.

## 1. Declare Your Groups

On your `AQS Descriptor Overrides` asset, fill the **Groups** array:

| GroupName  | DisplayName     |
| ---------- | --------------- |
| `Lighting` | Lighting        |
| `Shadows`  | Shadows         |
| `PostFX`   | Post Processing |

The array order **is** the group display order. Drag a row's grip handle in the Details panel to reorder groups — this is Unreal's built-in array reordering, no custom drag-and-drop UI needed.

## 2. Assign Each Field to a Group

On each field's entry in `Overrides`, set `GroupOverride` to match a `GroupName` you declared above:

```
FieldName: GlobalIlluminationQuality   →  GroupOverride: Lighting
FieldName: bLumenGI                    →  GroupOverride: Lighting
FieldName: ReflectionQuality           →  GroupOverride: Lighting
FieldName: bLumenReflections           →  GroupOverride: Lighting

FieldName: ShadowQuality               →  GroupOverride: Shadows
FieldName: bVirtualShadowMaps          →  GroupOverride: Shadows

FieldName: bBloom                      →  GroupOverride: PostFX
FieldName: bMotionBlur                 →  GroupOverride: PostFX
FieldName: bDepthOfField               →  GroupOverride: PostFX
```

## 3. Order Rows Within a Group

Use `SortOrderOverride` on each field, same as always — it now sorts *within* the field's group, not globally.

```
FieldName: bBloom         →  GroupOverride: PostFX   SortOrderOverride: 0
FieldName: bMotionBlur    →  GroupOverride: PostFX   SortOrderOverride: 1
FieldName: bDepthOfField  →  GroupOverride: PostFX   SortOrderOverride: 2
```

## What Happens to Ungrouped Fields

Any field with no `GroupOverride`, or one that doesn't match a declared group name, falls into an implicit **"Other"** group. "Other" always renders **last**, regardless of where you do or don't place it — you never need to declare it yourself, and it can never accidentally end up in the middle of your layout.

## Showing Section Headers

Grouping affects sort order automatically with zero extra setup. To also show a visible header above each group, assign a **GroupHeaderWidgetClass** on `WBP_AQS_AutoPanel` — see [The Auto Panel](/aqs-doc/building-menus/the-autopanel.md#group-section-headers).

## Virtual Rows Support Grouping Too

A [Virtual CVar Setting](/aqs-doc/building-menus/virtual-cvar-settings.md) (a CVar-only row with no preset field backing) can also set `GroupOverride` — a Ray Tracing setting can sit right alongside your other Lighting fields in the same section.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://stylizededge-devs.gitbook.io/aqs-doc/building-menus/grouping-and-ordering.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
