这看起来可能是一个很奇怪的问题,但是可以从Qt对象生成一个Qt设计器表单(.ui
),也就是说可以继承QWidget
?Qt对象/类到Qt ui文件
我的计划是在代码中构建一个简单的动态表单,当用户选择他们想要的东西时,例如字段,控件类型,然后转储出一个.ui
文件,以便他们可以在需要之后调整布局。
该代码将使用QUiLoader
类重新加载ui
文件并显示修改或不是ui
文件。
这看起来可能是一个很奇怪的问题,但是可以从Qt对象生成一个Qt设计器表单(.ui
),也就是说可以继承QWidget
?Qt对象/类到Qt ui文件
我的计划是在代码中构建一个简单的动态表单,当用户选择他们想要的东西时,例如字段,控件类型,然后转储出一个.ui
文件,以便他们可以在需要之后调整布局。
该代码将使用QUiLoader
类重新加载ui
文件并显示修改或不是ui
文件。
由于QWidget继承自QObject,它将获得QObject提供的所有动态属性检查。 QObject(和QWidgets)也自然地将它们自己排列成树(参见QObject :: parent和QObject :: children)。通过遵循小部件树并获取每个小部件的属性,可以生成一个xml .ui文件,其中包含有关每个控件的基本信息。
工作出从预先建立的形式的信号/槽连接可能会比较麻烦一些,因为似乎没有什么办法让他们的信息之外的QObject :: dumpObjectInfo但你描述的程序在你的问题中,很容易以其他方式跟踪他们。
让我来澄清一下,Qt Designer有一个WYSIWYG用户界面,它以xml格式创建Qt Designer表单,然后在编译时将其转换为C++代码。你问是否可以倒退呢?
是的,我认为这是可能的,因为Qt设计器形式只是xml无论如何。您可以创建一个接受C++代码的应用程序,特别是用于完整声明类的代码,然后将该类的PROPERTIES转换为其对应的xml代码。这将涉及很多工作,在这一点上,我个人不再看到这一点。
编辑:这个项目将需要你反向工程Qt设计师。但是,是的,这是非常可能的。
您还可以使用设计器模块将Qt Designer嵌入到您自己的代码中。您需要将CONFIG + =设计器添加到.pro文件。
请看看设计师模块的位置:http://developer.qt.nokia.com/doc/qt-4.8/qtdesigner.html
Qt的内省工具GammaRay可以从AUI(在检测中的应用)对话保存到.ui
文件的最新版本,IIRC。
我很想拥有该工具,将大量的Qt-Designer手工制作的widget创建代码转换为.ui文件。我之前就问过Qt开发人员,我想 - 那时的答案是'不'。我很想知道它是否成为可能。 –
该主题已于2011年3月在[Qt中心论坛帖子]中讨论过(http://www.qtcentre.org/threads/39911-How-to-create-.ui-file-from-hand-written-header-和源文件只)。一个人说他们可以进行转换,收费,但没有提到可用的工具。 –
@Clare Macrae:我认为Qt Center论坛帖子是为了直接解析源代码以产生.ui文件(静态),而OP则强调了通过用户交互构建简单表单的动态,并坚持将结果作为一个.ui文件(一个表单设计器?)。 – menjaraz