2011-11-17 55 views
9

这看起来可能是一个很奇怪的问题,但是可以从Qt对象生成一个Qt设计器表单(.ui),也就是说可以继承QWidgetQt对象/类到Qt ui文件

我的计划是在代码中构建一个简单的动态表单,当用户选择他们想要的东西时,例如字段,控件类型,然后转储出一个.ui文件,以便他们可以在需要之后调整布局。

该代码将使用QUiLoader类重新加载ui文件并显示修改或不是ui文件。

+1

我很想拥有该工具,将大量的Qt-Designer手工制作的widget创建代码转换为.ui文件。我之前就问过Qt开发人员,我想 - 那时的答案是'不'。我很想知道它是否成为可能。 –

+0

该主题已于2011年3月在[Qt中心论坛帖子]中讨论过(http://www.qtcentre.org/threads/39911-How-to-create-.ui-file-from-hand-written-header-和源文件只)。一个人说他们可以进行转换,收费,但没有提到可用的工具。 –

+0

@Clare Macrae:我认为Qt Center论坛帖子是为了直接解析源代码以产生.ui文件(静态),而OP则强调了通过用户交互构建简单表单的动态,并坚持将结果作为一个.ui文件(一个表单设计器?)。 – menjaraz

回答

-1

不是这样。正如你记得的,UI文件是在compilet-me生成合适的.cpp代码的源代码。 Gui加载器是点对实现模式的一部分,这有助于减少编译时间。

+0

.ui文件只是描述小部件层次结构的xml。 – Tyr

+0

是的。但是在编译过程中它有什么作用? –

+0

鉴于问题与使用UiLoader动态加载表单有关,它们的作用是作为外部数据文件进行分析,以在运行时创建匹配控件。 – Tyr

1

由于QWidget继承自QObject,它将获得QObject提供的所有动态属性检查。 QObject(和QWidgets)也自然地将它们自己排列成树(参见QObject :: parent和QObject :: children)。通过遵循小部件树并获取每个小部件的属性,可以生成一个xml .ui文件,其中包含有关每个控件的基本信息。

工作出从预先建立的形式的信号/槽连接可能会比较麻烦一些,因为似乎没有什么办法让他们的信息之外的QObject :: dumpObjectInfo但你描述的程序在你的问题中,很容易以其他方式跟踪他们。

0

让我来澄清一下,Qt Designer有一个WYSIWYG用户界面,它以xml格式创建Qt Designer表单,然后在编译时将其转换为C++代码。你问是否可以倒退呢?

是的,我认为这是可能的,因为Qt设计器形式只是xml无论如何。您可以创建一个接受C++代码的应用程序,特别是用于完整声明类的代码,然后将该类的PROPERTIES转换为其对应的xml代码。这将涉及很多工作,在这一点上,我个人不再看到这一点。

编辑:这个项目将需要你反向工程Qt设计师。但是,是的,这是非常可能的。

2

Qt的内省工具GammaRay可以从AUI(在检测中的应用)对话保存到.ui文件的最新版本,IIRC。