Qt:插件参数的C ++动态参数GUI

时间:2011-01-11 09:00:04

标签: c++ qt design-patterns plugins qt4

我的基于Qt的应用程序可通过插件(http://doc.qt.io/archives/4.6/plugins-howto.html#the-lower-level-api-extending-qt-applications)进行扩展。

这些插件可以有自己的参数。(int,double,String,enumerations..etc)

我想要做的是,在XML中定义这些参数,并通过解析XML文件动态生成GUI。

我在这里发现了一些类似的架构 - http://www.slicer.org/slicerWiki/index.php/Slicer3:Execution_Model_Documentation#Slicer3_GUI_Generation

是否有任何我可以与Qt一起使用的库/框架。我是否必须手动编写自己的代码来解析XML,将参数映射到Maps,生成GUI检查XML元素等等

任何提示?

7 个答案:

答案 0 :(得分:4)

我需要在大约一年前做类似的事情;没有找到任何东西,以使它更容易和更快(link)。我不敢分享它。你自己的角色。

很明显,但我反向设计了Designer应用程序生成的XML,并创建了一些接口来重新生成常见的XML块。请记住,XML可能会在以后的Qt版本中发生变化,我有单元测试来验证我自己的XML是否有效。

答案 1 :(得分:4)

您可以通过编程方式创建*.ui个文件,请参阅XML schema。然后,您可以使用QtUiTools动态渲染它们。

答案 2 :(得分:3)

Tulip有这样一种机制,它基于C ++ / Qt:http://tulip.labri.fr/TulipDrupal/ 我认为开发团队定义了它自己的类型来替换QVariant,它们传递了插件参数。 它们可以支持各种主要类型,默认参数,各种类型的插件,......

源代码位于:http://sourceforge.net/projects/auber/files/

答案 3 :(得分:1)

如果您正在使用Qt及其插件系统,您应该能够定义一个从插件返回UI元素的函数。然后,您可以只显示该元素,并让元素本身处理配置插件,但需要完成。它似乎比通过XML接口指定所有内容更简单。

答案 4 :(得分:1)

请注意,Slicer4基于Qt。我不知道GUI生成部分是否已经移植。链接到alpha声明和更多信息:

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

答案 5 :(得分:1)

您可能需要查看QML

答案 6 :(得分:0)

此外,您可以使用QScript来控制UI和您想要的内容。