заводите табличку для EditorType
типа
C++ (Qt)
struct EditorTypeInfo
{
EditorType editor_type;
const DataType * data_types;
uint cnt_data_types;
};
для каждого типа EditorType определяете массив елементов DataType
C++ (Qt)
const DataType table_data_types_LineText[] =
{
data_SignedReal, // "Signed Real" (для popup)
data_UnsignedReal, // "Unsigned Real"
data_SignedInt, // "Signed Integer"
data_UnsignedInt, // "Unsigned Integer"
};
const DataTypes table_data_types_ColorButton[] =
{
data_RGB, // "RGB"
data_ARGB, // "ARGB"
};
ну и формируете таблицу для каждого типа EditorType
C++ (Qt)
EditorTypeInfo table_editor_type_info[] =
{
{ editor_LineText, table_data_types_LineText, ARRAY_SIZE( table_data_types_LineText ) },
{ editor_ColorButton, table_data_types_ColorButton, ARRAY_SIZE( table_data_types_ColorButton ) },
};
теперь по этой таблице можно перемещаться, находить нужный тип и ходить по массиву его свойств