Qt: C ++ динамический графический параметр для параметров плагина - PullRequest
3 голосов
/ 11 января 2011

Приложение на базе Qt расширяется с помощью плагинов (http://doc.qt.io/archives/4.6/plugins-howto.html#the-lower-level-api-extending-qt-applications).

Эти плагины могут иметь свои собственные параметры. (Int, double, String, enumerations..etc)

То, что я хочу сделать, это определить эти параметры в XML и динамически генерировать GUI, анализируя файл XML.

Я нашел несколько похожую архитектуру здесь - http://www.slicer.org/slicerWiki/index.php/Slicer3:Execution_Model_Documentation#Slicer3_GUI_Generation

Есть ли какая-либо библиотека / фреймворк, которую я могу использовать для этого с Qt. Или мне нужно вручную написать свой собственный код из парсинга XML, сопоставления параметров в Maps, генерирования GUI, проверяющего элемент XML ... и т.д.

Какие-нибудь советы?

Ответы [ 7 ]

4 голосов
/ 14 января 2011

Вы можете программно создавать *.ui файлы, см. XML-схему . Затем вы можете визуализировать их на лету с помощью QtUiTools .

4 голосов
/ 11 января 2011

Мне нужно было сделать нечто подобное год или около того назад; ничего не нашел, чтобы было проще и быстрее ( ссылка ). Я не могу поделиться этим, я боюсь. Роль свою.

Очевидно, но я пересмотрел XML, сгенерированный приложением Designer, и сделал несколько интерфейсов для повторной генерации общих блоков XML. Имейте в виду, что XML может измениться в более поздних выпусках Qt, и у меня были модульные тесты для проверки правильности моего собственного XML.

3 голосов
/ 14 ноября 2012

У Tulip такой механизм, он основан на C ++ / Qt: http://tulip.labri.fr/TulipDrupal/ Я думаю, что команда разработчиков определила свой собственный тип для замены QVariant, в котором они передают аргументы плагина. Они могут поддерживать различные основные типы, аргументы по умолчанию, различные типы плагинов, ...

Исходный код доступен по адресу: http://sourceforge.net/projects/auber/files/

1 голос
/ 19 января 2011

Возможно, вы захотите взглянуть на QML .

1 голос
/ 14 января 2011

Обратите внимание, что Slicer4 основан на Qt.Я не знаю, портирована ли уже часть генерации GUI.Ссылка на альфа-объявление и дополнительную информацию:

http://slicer -users.65878.n3.nabble.com / Slicer-4-0-alpha-td1448047.html

1 голос
/ 11 января 2011

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

0 голосов
/ 20 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...