我有一个从数据库表模型动态生成的表单:
我有办法将该表单保存到* .ui文件中吗?我想允许用户在Qt Designer中编辑该表单。
答案 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插件......在这种情况下,此功能可能是免费的。)