从c++控制台应用程序/或qtgui应用程序中呈现gvc(graohviz)

render a gvc (graohviz) from c++ console application / or qt gui application

本文关键字:应用程序 gvc graohviz qtgui 控制台 c++      更新时间:2023-10-16

我正在编写一个程序,它可以直接在屏幕上生成我想要的点描述文件。

我从graphviz.org获得了以下关于如何将其用作库的代码,它可以在中工作

int main(int argc, char *argv[])
{
    Agraph_t* G;
    GVC_t* gvc;
    gvc = gvContext(); /* library function */
    FILE* fl;
    FILE* ot;
    ot = fopen("/home/test.png", "w");
    fl = fopen("/home/my.gv", "r");
    G = agread(fl,0);
    gvLayout (gvc, G, "dot"); /* library function */
    gvRender(gvc, G,"png", ot);
    gvFreeLayout(gvc, G); /* library function */
    agclose (G); /* library function */    
    return (gvFreeContext(gvc));
}

当我从qt控制台应用程序项目运行它时,它只会给出

Press <RETURN> to close this window...

我可以看到它确实生成了这个test.png文件。我想一定有一种方法可以直接显示gvc,而不需要打开png文件,对吧?

因为从头开始为此编写GUI应用程序似乎是一个非常糟糕的主意,所以使用外部程序来实现这一点怎么样?

如果你坚持,你甚至可以从你的生成程序中启动它:

    system("feh -dR1 test.png");