【问题标题】:Display a .dot file inside a Qt application在 Qt 应用程序中显示 .dot 文件
【发布时间】:2013-07-15 03:53:22
【问题描述】:

我是 Qt 和 C++ 的新手……现在,我正在用 Qt 编写一个应用程序,我必须在我的应用程序中显示一个已经生成的 .dot 文件。我尝试了渲染功能,但对我不起作用.. 有人可以在这方面帮助我吗..

谢谢

【问题讨论】:

    标签: qt graphviz dot


    【解决方案1】:

    使用 Python 时遇到了同样的问题。我想出了这个解决方案:

    svg_string = dot_graph.create_svg(prog='dot')
    svgWidget = QtSvg.QSvgWidget()
    svgWidget.load(QtCore.QByteArray(svg_string))
    

    猜猜你可以在 C++ 中做类似的事情

    【讨论】:

      【解决方案2】:

      直接绘制点文件需要能够在正确的位置显示节点,并正确链接它们。这是由非常复杂的引擎完成的,并且不包含在点文件中,这只是对图形的描述。也许有 C++/Qt 库将点文件作为输入,但我不知道。

      根据本主题(Graphviz: How to go from .dot to a graph?),您可以轻松地将点文件转换为 png 或 svg 文件。如果你想在你的应用程序中显示渲染的图形,最简单的方法是生成该 png 图片(从 shell 或从你的代码)并从你的程序中对其进行操作。

      【讨论】:

      • 您好 Bastien Pasdeloup,我同意您的帖子。但我需要的实际解决方案是与渲染图进行交互。如果我们转换为 PNG 或 SVG,则无法进行交互。那么与输出图进行交互的可能方式是什么?
      • 我告诉过你,我不知道任何基于点文件的 C++/Qt 渲染引擎。它可能存在,但我不熟悉 C++ 库。您可以尝试找到一个,它肯定会让您与您的图表进行一些交互。另一个 overkill 解决方案是将图形作为图片导入,并使用一些图像识别算法 (goo.gl/VrCBy) 来检测节点/边缘/信息的位置以允许交互用你的元素。如果你选择这种方法,你应该做一些关于神经网络(goo.gl/i7Kbf)和豪斯多夫距离(goo.gl/LZNSF)的研究
      【解决方案3】:

      看看QGraph。您将需要更多的工作来使您的图表具有交互性。 无论如何,如果您是 Qt 新手,即使是简单的显示也是对图形的深入介绍。

      我有自己的实现,但很抱歉它还没有准备好发布 - 我将在 SWI-Prolog 上下文中进行...

      【讨论】:

      • 您能否建议我们可能使用的任何图书馆以完成我们的任务?..
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多