Как построить диалоговое окно на основе определения класса? (как модель системы Джанго)

Джанго поставляется с этим отличным подходом, где все, что вам нужно сделать, это написать свою модель данных, и Django сгенерирует правильное (самое основное) представление в соответствии со свойствами вашей модели.

Например:

class Article(models.Model):
pub_date = models.DateTimeField()
headline = models.CharField(max_length=200)
content = models.TextField()
reporter = models.ForeignKey(Reporter)

def __unicode__(self):
return self.headline

Любые формы, отображаемые Django, уже будут использовать правильный и соответствующий тип поля, соответствующий типу свойства (DateTimeField, CharField, TextField и т. Д.).

Мне было интересно то же самое возможно с C++? Я думаю о написании класса настроек приложения и не хочу создавать диалоговое окно вручную. Я бы предпочел, если бы я мог построить диалог автоматически. Меня не волнует порядок и расположение отдельных полей ввода. Я думаю, что это должно быть возможно, учитывая, что я все равно следую шаблону Model View Controller.

РЕДАКТИРОВАТЬ Я был бы признателен, если бы ответы могли включать пример кода или ссылки на примеры.

0

Решение

В C ++ нет механизма отражения, позволяющего запрашивать членов класса, поэтому невозможно достичь того, чего вы хотите, так же легко, как в Python. Но вы можете применять методы, используемые библиотеками сериализации C ++, например Boost. По сути, вам нужно добавить в свой класс эквивалент ускоренной сериализации serialize метод, который компенсирует недостаток средств отражения, необходимых для извлечения информации о членах класса, вот учебник по расширенной сериализации, объясняющий это: http://www.boost.org/doc/libs/1_35_0/libs/serialization/doc/serialization.html.

Другой вариант, также используемый некоторыми системами сериализации C ++, заключается в том, чтобы проанализировать исходный код класса C ++ и сгенерировать код C ++, который выполняет сериализацию (в вашем случае это также будет генерировать диалоги GUI).

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector