将现有QDialog保存到* .ui文件

时间:2011-12-31 18:33:37

标签: qt qt4 pyqt pyqt4

我有一个从数据库表模型动态生成的表单:

enter image description here

我有办法将该表单保存到* .ui文件中吗?我想允许用户在Qt Designer中编辑该表单。

2 个答案:

答案 0 :(得分:2)

据推测,您的用户可以添加和修改哪些内容会受到一些限制?

如果是这样,那么也许您可以采用更加结构化的方法并使用QWizard为设计和编辑表单提供简单的界面。该向导将生成ui个文件,然后使用uic module将其加载到您的应用程序中(如果您使用的是PyQt4,那是因为它不包含QUiLoader类)。

当然,要使其正常工作,您需要调整当前的过程以动态生成表单,以便它也可以与ui文件一起使用。

修改

看起来QAbstractFormBuilder提供了一个API,用于加载和保存小部件作为ui文件。它是QtDesigner模块的一部分,现在包含在PyQt4中。

话虽如此,我对load()save()方法的简短实验并没有产生非常有用的结果 - 但希望其他人会有更多的运气。

就个人而言,如果我正在设计这样的应用程序,我宁愿使用合适的XML库(Qt或者几个python标准库模块之一)自己生成ui文件。表单布局的结构非常简单和规则,因此ui文件不应该太难复制。以这种方式做事的主要好处是它允许完全控制输入和输出。

答案 1 :(得分:0)

有一个load(),但QUiLoader中没有save():

http://developer.qt.nokia.com/doc/qt-4.8/quiloader.html#load

UI文件格式已记录,并且是XML。所以你可以编写自己的.UI文件生成器:

http://developer.qt.nokia.com/doc/qt-4.8/designer-ui-file-format.html

事实上,你可以反过来解决这个问题。而不是使用程序化小部件API调用生成对话框...而是使用XML生成.UI文件。然后,您可以在应用程序中或通过QtDesigner加载它。

(根据您的应用程序的用途或用途,您可能还会考虑将其重新考虑为QtDesigner插件......在这种情况下,此功能可能是免费的。)