Сохранить существующий QDialog в файл * .ui - PullRequest
2 голосов
/ 31 декабря 2011

У меня есть форма, сгенерированная динамически из модели таблицы базы данных:

enter image description here

Есть ли способ сохранить эту форму в файл * .ui?Я хочу разрешить пользователю редактировать эту форму в Qt Designer.

Ответы [ 2 ]

2 голосов
/ 01 января 2012

Предположительно, должны быть некоторые ограничения на то, что ваши пользователи могут добавлять и редактировать?

Если это так, то, возможно, вы могли бы использовать более структурированный подход и использовать QWizard для обеспечения простого интерфейсадля проектирования и редактирования форм.Мастер сгенерирует ui файлов, которые затем будут загружены в ваше приложение с использованием uic-модуля (если вы используете PyQt4, то есть - потому что он не включает класс QUiLoader).

Конечно, чтобы это работало, вам необходимо адаптировать текущую процедуру для динамического создания форм, чтобы она также работала с ui файлами.

EDIT

Похоже, что QAbstractFormBuilder предоставляет API для загрузки и сохранения виджетов в виде файлов пользовательского интерфейса.Он является частью модуля QtDesigner, который теперь включен в PyQt4.

Сказав это, мои краткие эксперименты с методами load() и save() не дали очень полезных результатов, но, надеюсь, другие будут иметьбольше удачи.

Лично, если бы я разрабатывал подобное приложение, я бы предпочел сам генерировать файлы пользовательского интерфейса, используя подходящую библиотеку XML (либо Qt, либо один из нескольких модулей стандартной библиотеки Python).Структура макета формы довольно проста и регулярна, поэтому файлы пользовательского интерфейса не должны быть слишком сложными для копирования.Основным преимуществом такой работы является то, что она обеспечивает полный контроль над входом и выходом.

0 голосов
/ 31 декабря 2011

В QUiLoader есть load (), но нет save ():

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

Формат файла пользовательского интерфейса задокументирован и представляет собой XML.Таким образом, вы можете написать свой собственный генератор файлов .UI:

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

На самом деле, вы можете атаковать эту проблему наоборот.Вместо генерации диалога с использованием вызовов API виджетов ... вместо этого создайте файл .UI с XML.Затем вы можете загрузить его в свое приложение или через QtDesigner.

(В зависимости от того, что ваше приложение делает или намеревается сделать, вы можете также подумать о переосмыслении его как плагина QtDesigner ... в этом случаеэта функциональность может быть бесплатной.)

...