【问题标题】:Qt : C++ dynamic parameter GUI for plugin parametersQt:插件参数的 C++ 动态参数 GUI
【发布时间】:2011-01-11 09:00:03
【问题描述】:

我的基于 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 元素...等

有什么建议吗?

【问题讨论】:

  • 您可能需要重新表述您的问题,因为问题是一般性的,并非特定于插件。

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


【解决方案1】:

大约一年前我需要做类似的事情;没有找到任何东西让它变得更容易和更快(link)。恐怕不能分享。扮演你自己的角色。

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

【讨论】:

  • 这个。我不得不做类似的事情,可悲的是,我也不能分享。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

          您可能想查看QML

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-09-30
              • 2017-06-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多