本文整理汇总了C++中GraphEdge::setDrawAsArc方法的典型用法代码示例。如果您正苦于以下问题:C++ GraphEdge::setDrawAsArc方法的具体用法?C++ GraphEdge::setDrawAsArc怎么用?C++ GraphEdge::setDrawAsArc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GraphEdge
的用法示例。
在下文中一共展示了GraphEdge::setDrawAsArc方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addEdgeCommand
void GraphView::addEdgeCommand(bool undirected)
{
if (edgeSource) {
GraphNode* edgeDestination = dynamic_cast<GraphNode*>(selectedItem);
if (edgeDestination && edgeSource != edgeDestination) {
GraphEdge* existingEdge = NULL;
bool drawAsArc(false);
QListIterator<GraphEdge*> it(edgeSource->getDestinationEdges());
while (it.hasNext() && !existingEdge) {
GraphEdge* edge = it.next();
if (edge->getSourceNode() == edgeDestination)
existingEdge = edge;
}
if (existingEdge) {
if (!existingEdge->isUndirected()) {
if (weightedGraph && !undirectedGraph && currentAction == ADD_DIRECTED_EDGE) {
existingEdge->setDrawAsArc(true);
drawAsArc = true;
existingEdge = NULL;
}
else
undoStack->push(new ChangeEdgeDirectionCommand(existingEdge, false, true));
}
}
else {
it = QListIterator<GraphEdge*>(edgeSource->getSourceEdges());
while (it.hasNext() && !existingEdge) {
GraphEdge* edge = it.next();
if (edge->getDestinationNode() == edgeDestination) {
existingEdge = edge;
if (currentAction == ADD_UNDIRECTED_EDGE)
undoStack->push(new ChangeEdgeDirectionCommand(existingEdge, false, true));
}
}
}
if (existingEdge) {
scene()->removeItem(currentEdge);
delete currentEdge;
}
else {
currentEdge->setDestinationNode(edgeDestination);
currentEdge->setDrawAsArc(drawAsArc);
undoStack->push(new AddEdgeCommand(currentEdge, this));
}
currentEdge = NULL;
edgeSource = NULL;
}
}
else if (selectedItem) {
edgeSource = dynamic_cast<GraphNode*>(selectedItem);
currentEdge = new GraphEdge(edgeSource, edgeSource->getCenter(), undirected, !undirectedGraph, weightedGraph, false);
// Setting the Z value makes sure the selection of nodes are made correct
currentEdge->setZValue(-1);
scene()->addItem(currentEdge);
}
updateStatus();
}