void NetworkGraphics::updateNetwork(){ qDebug() << "NetworkGraphics::updateNetwork()"; scene->clear(); linkMap.clear(); rebuildNetwork(); QPointF position = QPointF(0.0, 0.0); QList<raw_address> rootAddrs = network->getTopLevelAddresses(); for(int i=0; i<rootAddrs.size(); i++){ if(positionBranch(rootAddrs[i], position)){ QSizeF size = computeSize(rootAddrs[i]); QRectF rect = QRectF(position, size); //scene->addRect(rect);*/ position.setX( position.x() + size.width() + (3.0*CLOUD_X_MARGIN) ); //scene->update(rect); } } //Draw links QList<NetLink*> links = network->getLinks(); QPen blackPen = QPen(); blackPen.setColor(Qt::gray); blackPen.setWidth(2); for(int i=0; i<links.size(); i++){ NetLink* link = links[i]; GraphicNetCloud* firstCloud = cloudMap[nodeMap[link->getFirst()]]; GraphicNetCloud* secondCloud = cloudMap[nodeMap[link->getSecond()]]; if(firstCloud != secondCloud){ QPointF startPoint = firstCloud->boundingRect().center(); QPointF endPoint = secondCloud->boundingRect().center(); startPoint.setX(firstCloud->pos().x() + startPoint.x()); startPoint.setY(firstCloud->pos().y() + startPoint.y()); endPoint.setX(secondCloud->pos().x() + endPoint.x()); endPoint.setY(secondCloud->pos().y() + endPoint.y()); QLineF line(startPoint, endPoint); QGraphicsLineItem* lineItem = new QGraphicsLineItem(line); lineItem->setPen(blackPen); lineItem->setZValue(1); lineItem->setOpacity(.8); scene->addItem(lineItem); //qDebug() << "Line: " << line ; linkMap.insert(link, lineItem); } } }