for connected embedded systems
PtGroup
A container that can arrange its children in rows and columns
Class hierarchy:
PtWidget --> PtBasic --> PtContainer --> PtGroup
For more information, see the diagram of the widget hierarchy.
PhAB icon:
None - use PhAB's Group Together button in the speedbar:

Public header:
<photon/PtGroup.h>
Description:
The PtGroup class inherits the functionality of a container and actively manages the geometry of its children: the children are arranged in rows, columns, or a matrix, and PtGroup may give them exclusive-selection behavior.

A group of buttons.
PhAB has a Group command that creates a PtGroup widget. See "Aligning widgets using groups" in the Geometry Management chapter of the Programmer's Guide.
New resources:
| Resource | C type | Pt type | Default |
|---|---|---|---|
| Pt_ARG_GROUP_FLAGS | unsigned long | Flag | 0 |
| Pt_ARG_GROUP_HORZ_ALIGN | unsigned short | Scalar | Pt_GROUP_HORZ_CENTER |
| Pt_ARG_GROUP_ORIENTATION | unsigned short | Scalar | Pt_GROUP_HORIZONTAL |
| Pt_ARG_GROUP_ROWS_COLS | unsigned short | Scalar | 0 |
| Pt_ARG_GROUP_SPACING | unsigned short | Scalar | 0 |
| Pt_ARG_GROUP_SPACING_X | unsigned short | Scalar | 0 |
| Pt_ARG_GROUP_SPACING_Y | unsigned short | Scalar | 0 |
| Pt_ARG_GROUP_VERT_ALIGN | unsigned short | Scalar | Pt_GROUP_VERT_CENTER |
Pt_ARG_GROUP_FLAGS
| C type | Pt type | Default |
|---|---|---|
| unsigned long | Flag | 0 |
Possible values:
- Pt_GROUP_EQUAL_SIZE
- Force all children to be the same height and width.
- Pt_GROUP_EXCLUSIVE
- Allow only one child to be set at a time.
- Pt_GROUP_NO_SELECT_ALLOWED
- Allow any exclusive group to have no selected item. If this flag is set, the user can deselect the currently selected child without having to select another child. To do this, the user simply clicks on the currently selected child.
- Pt_GROUP_NO_KEYS
- Prevent the group from using any keys (e.g. arrows).
- Pt_GROUP_NO_KEY_WRAP_HORIZONTAL
- Don't use key that would cause horizontal wrap.
- Pt_GROUP_NO_KEY_WRAP_VERTICAL
- Don't use key that would cause vertical wrap.
- Pt_GROUP_NO_KEY_WRAP
- Don't use keys that would cause horizontal or vertical wrap.
- Pt_GROUP_EQUAL_SIZE_HORIZONTAL
- Make children in group same width.
- Pt_GROUP_EQUAL_SIZE_VERTICAL
- Make children in group same height.
- Pt_GROUP_STRETCH_HORIZONTAL
- Stretch the rightmost children in group horizontally to fill its canvas.
- Pt_GROUP_STRETCH_VERTICAL
- Stretch the bottommost children in group vertically to fill its canvas.
- Pt_GROUP_STRETCH_FILL
- Stretch the last widget(s) to fill the available space in the direction indicated by the orientation.
The default setting of this resource is 0; that is, no flags have been set.
![]() |
Don't set the Pt_GROUP_EQUAL_SIZE_... and Pt_GROUP_STRETCH_... flags for the same direction - the group will expand every time its extent is calculated. |
Pt_ARG_GROUP_HORZ_ALIGN
| C type | Pt type | Default |
|---|---|---|
| unsigned short | Scalar | Pt_GROUP_HORZ_CENTER |
Determines how the children are aligned within the group. The children retain their relative positions to each other. Possible values:
- Pt_GROUP_HORZ_LEFT
- Pt_GROUP_HORZ_CENTER
- Pt_GROUP_HORZ_RIGHT
Pt_ARG_GROUP_ORIENTATION
| C type | Pt type | Default |
|---|---|---|
| unsigned short | Scalar | Pt_GROUP_HORIZONTAL |
Possible values:
- Pt_GROUP_ASIS
- Don't align children.
- Pt_GROUP_HORIZONTAL
- Align children in a row.
- Pt_GROUP_VERTICAL
- Align children in a column.
Pt_ARG_GROUP_ROWS_COLS
| C type | Pt type | Default |
|---|---|---|
| unsigned short | Scalar | 0 |
For a horizontally aligned group, this resource indicates the number of columns to distribute children into. For a vertically aligned group, this resource indicates the number of rows to distribute children into. Not used for an "as is" group; see Pt_ARG_GROUP_ORIENTATION, above.
Pt_ARG_GROUP_SPACING
| C type | Pt type | Default |
|---|---|---|
| unsigned short | Scalar | 0 |
If alignment is in effect, this resource defines how many pixels will separate each child of the group.
![]() |
If you set this resource, you'll automatically set Pt_ARG_GROUP_SPACING_X and Pt_ARG_GROUP_SPACING_Y to the same value. |
Pt_ARG_GROUP_SPACING_X
| C type | Pt type | Default |
|---|---|---|
| unsigned short | Scalar | 0 |
If alignment is in effect, this resource defines how many pixels will separate each child of the group horizontally.
Pt_ARG_GROUP_SPACING_Y
| C type | Pt type | Default |
|---|---|---|
| unsigned short | Scalar | 0 |
If alignment is in effect, this resource defines how many pixels will separate each child of the group vertically.
Pt_ARG_GROUP_VERT_ALIGN
| C type | Pt type | Default |
|---|---|---|
| unsigned short | Scalar | Pt_GROUP_VERT_CENTER |
Determines how the children are aligned within the group. The children retain their relative positions to each other. Possible values:
- Pt_GROUP_VERT_TOP
- Pt_GROUP_VERT_CENTER
- Pt_GROUP_VERT_BOTTOM
Inherited resources:
If the widget modifies an inherited resource, the "Default override" column indicates the new value. This modification affects any subclasses of the widget.

