- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望实现一个使用和显示简单图形的应用程序。其中一个是一棵树,一个就像一个自动机。
除了 Qt 之外,我决定使用 OGDF,因为我需要布局。但我不太明白这一点...我是否必须自己实现所有绘图/定位功能(例如从 GraphAttributes 获取所有节点和边缘坐标)或者 OGDF 是否为此提供了一些不错的接口(interface)? (与 GraphAttributes::writeGML() 一样好)
最佳答案
我找不到任何好的界面,所以我只是自己获取坐标,但是,这种方法并不完美,因为布局算法返回负坐标(相对于我认为的图形中心点,而不是正常的左上角原点)。我的代码看起来有点像这样:
int nodeWidth = 30, nodeHeight = 30, siblingDistance = nodeWidth + nodeHeight;
ogdf::TreeLayout treeLayout;
treeLayout.siblingDistance(siblingDistance);
treeLayout.call(GA);
int width = GA.boundingBox().width(), height = GA.boundingBox().height();
ui->graphView->scene()->setSceneRect(QRect(0, 0, width+nodeWidth, height+nodeHeight));
cout << "Scene dimensions: " << GA.boundingBox().width() << " x " << GA.boundingBox().height() << endl;
GA.setAllWidth(nodeWidth);
GA.setAllHeight(nodeHeight);
ogdf::edge e;
forall_edges(e,graph){
ogdf::node source = e->source(), target = e->target();
int x1 = GA.x(source), y1 = GA.y(source);
int x2 = GA.x(target), y2 = GA.y(target);
QPainterPath p;
p.moveTo(x1 + nodeWidth/2, y1 + nodeHeight/2);
p.lineTo(x2 + nodeWidth/2, y2 + nodeHeight/2);
(void) ui->graphView->scene()->addPath(p, QPen(Qt::darkGray), QBrush(Qt::white));
}
ogdf::node n;
forall_nodes(n, graph) {
double x = GA.x(n);
double y = GA.y(n);
double w = GA.width(n);
double h = GA.height(n);
QRectF boundingRect(x, y, w, h);
cout << x << " : " << y << " : " << endl;
QRadialGradient radialGradient(boundingRect.center(), boundingRect.width());
radialGradient.setColorAt(1.0, Qt::lightGray);
radialGradient.setColorAt(0.7, QColor(230,230,240));
radialGradient.setColorAt(0.0, Qt::white);
(void) ui->graphView->scene()->addEllipse(boundingRect, QPen(Qt::black), QBrush(QRadialGradient(radialGradient)));
QGraphicsTextItem *text = ui->graphView->scene()->addText(QString(GA.labelNode(n).cstr()));
text->setPos(x, y);
}
// clear the graph after it has been displayed
graph.clear();
关于qt - 使用 OGDF 和 Qt 显示图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7724645/
我正在尝试获取 OGDF正在努力查看它是否适合我的项目,但我在使用示例程序时遇到了问题。 我正在尝试编译 this example program : #include #include #inc
是否可以在 OGDF 中布置边? OGDF 甚至包括布线边缘吗?因为几天来我一直在浏览文档,但仍然没有找到如何这样做的方法。特别有趣的是边和节点之间的连接点。我必须自己确定这一点吗? 最佳答案 好吧,
我有一个简单的无向图 G,如果某个条件为真,我想反转一条边。以下代码给出了无法访问 EdgeElement 构造函数的错误: if(dfsNum[source->index()]>dfsNum[tar
我使用的是 OGDF 2012.07 版。 我有一个 GraphCopy,它表示 Graph 实例的拷贝。在对图形拷贝进行操作时,它会保存对原始节点和边的引用。在documentation of Gr
我希望实现一个使用和显示简单图形的应用程序。其中一个是一棵树,一个就像一个自动机。 除了 Qt 之外,我决定使用 OGDF,因为我需要布局。但我不太明白这一点...我是否必须自己实现所有绘图/定位功能
我正在使用 Xcode 添加 OGDF到我的 C++ 项目。它是一个静态的 .a 库,在从源代码编译它之后,我已经成功地将它添加到编译源代码中,设置正确的搜索路径,并且一切正常,直到我包括,例如,"o
我使用命令编译了文件(source.cpp) g++ -I/home/hrishikesh/Desktop/OGDF-snapshot/include -O2 source.cpp -o mytest
我刚开始使用 OGDF,并尝试通过运行 OGDF 网页上 How-Tos 下的一些示例来掌握它。我的代码可以编译,但是当我尝试在节点上调用 GraphAttributes 函数时出现段错误。 这是我的
我是一名优秀的程序员,十分优秀!