如何基于类定义构建对话窗口? (像django的模型系统)

时间:2012-12-18 12:14:23

标签: c++ django model-view-controller visual-c++

Django附带了这个很棒的方法,你只需编写数据模型,Django就会根据你的模型属性生成正确的(最基本的)视图。

E.g:

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++ 是否可以相同?我正在考虑编写一个应用程序设置类,我不想手工构建对话框窗口。如果我可以自动构建对话框,我更喜欢。我不关心各个输入字段的顺序和位置。我认为这应该是可能的,因为我无论如何都遵循模型视图控制器模式。

编辑如果答案可以包含示例代码或示例链接,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

在C ++中,没有允许您查询类成员的反射机制,因此不可能像在Python中那样轻松地实现您想要的。但是,您可以应用C ++序列化库使用的技术,例如Boost。从本质上讲,您需要向类添加一个等效的boost序列化serialize方法,这将弥补检索类成员信息所需的反射工具的缺乏,这是一个boost序列化教程解释这个:http://www.boost.org/doc/libs/1_35_0/libs/serialization/doc/serialization.html

另一个选项,也被一些C ++序列化系统使用,是解析C ++类源代码并生成执行序列化的C ++代码(在您的情况下也将生成GUI对话框)。