void widgetLandmark::SetPosInCMap() { jpsLandmark* landmark = GetCurrentLandmark(); if (landmark!=nullptr) { landmark->SetRect(_gview->GetCurrentSelectRect()->rect()); QString string = "Ellipse: x: "+QString::number(landmark->GetRect().center().x()) + " y: "+QString::number(landmark->GetRect().center().y())+" rA: "+QString::number(landmark->GetA()) + " rB: "+QString::number(landmark->GetB()); ui->ellipse_label->setText(string); ui->add_button->setChecked(false); // show ellipse and text in graphics view QPen pen = QPen(Qt::blue,2); pen.setCosmetic(true); QGraphicsEllipseItem* ellipse = _gview->GetScene()->addEllipse(landmark->GetRect(),pen); ellipse->setTransform(QTransform::fromTranslate(_gview->GetTranslationX(),_gview->GetTranslationY()), true); QGraphicsTextItem* text = _gview->GetScene()->addText(landmark->GetCaption()); text->setPos(landmark->GetPos().x()+_gview->GetTranslationX(),landmark->GetPos().y()+_gview->GetTranslationY()); //text->setScale(gl_scale_f); text->setData(0,_gview->GetScaleF()); text->setTransform(QTransform::fromScale(_gview->GetScaleF(),-_gview->GetScaleF()),true); landmark->SetEllipseItem(ellipse); landmark->SetTextItem(text); } }
void widgetLandmark::NewRegion() { ui->add_button->setChecked(false); // show ellipse and text in graphics view QPen pen = QPen(Qt::darkGreen,2); pen.setCosmetic(true); QRectF rect = _gview->GetCurrentSelectRect()->rect(); QGraphicsEllipseItem* ellipse = _gview->GetScene()->addEllipse(rect,pen); ellipse->setTransform(QTransform::fromTranslate(_gview->GetTranslationX(),_gview->GetTranslationY()), true); // create region jpsRegion* region = new jpsRegion(_dmanager->GetRegionCounter(),"Region"+QString::number(_dmanager->GetRegionCounter()), rect.center(),std::fabs(rect.width()/2.0),std::fabs(rect.height()/2.0)); QGraphicsTextItem* text = _gview->GetScene()->addText(region->GetCaption()); text->setPos(rect.center().x()+_gview->GetTranslationX(),rect.center().y()+_gview->GetTranslationY()); //text->setScale(gl_scale_f); text->setData(0,_gview->GetScaleF()); text->setTransform(QTransform::fromScale(_gview->GetScaleF(),-_gview->GetScaleF()),true); region->SetTextItem(text); region->SetEllipse(ellipse); _dmanager->NewRegion(region); //show Region in listwidget ShowRegions(); }
void GraphViewer::onSceneMousePress(QGraphicsSceneMouseEvent *mouseEvent) { if (_vertices.isEmpty()) _initialText->setVisible(false); if (_scene.items(QRectF( mouseEvent->scenePos().x() - VERTEX_SIZE*0.5, mouseEvent->scenePos().y() - VERTEX_SIZE*0.5, VERTEX_SIZE, VERTEX_SIZE) ).isEmpty()) { // Create new vertex QGraphicsEllipseItem * vertex = _scene.addEllipse( QRectF(-VERTEX_SIZE*0.5, -VERTEX_SIZE*0.5, VERTEX_SIZE, VERTEX_SIZE), QPen(Qt::black, 0), QBrush(Qt::white) ); vertex->setTransform( QTransform::fromTranslate(mouseEvent->scenePos().x(), mouseEvent->scenePos().y()) ); vertex->setZValue(VERTEX_CIRCLE_Z); _vertices << vertex; int id = _vertices.size()-1; vertex->setData(KEY_VERTEX_ID, id); QGraphicsSimpleTextItem * vertexId = _scene.addSimpleText(QString("%1").arg(id+1)); vertexId->setParentItem(vertex); vertexId->setTransform( QTransform::fromScale(0.005, 0.005) * QTransform::fromTranslate(-VERTEX_SIZE*( (id < 9) ? 0.18 : 0.28 ), -VERTEX_SIZE*0.35) ); vertexId->setZValue(VERTEX_TEXT_Z); } else { // Propose to draw new edge QGraphicsItem * item = _scene.itemAt(mouseEvent->scenePos(), QTransform()); if (qgraphicsitem_cast<QGraphicsEllipseItem*>(item) || qgraphicsitem_cast<QGraphicsSimpleTextItem*>(item)) { QGraphicsEllipseItem* vertex = qgraphicsitem_cast<QGraphicsEllipseItem*>(item->parentItem()); if (!vertex) vertex = qgraphicsitem_cast<QGraphicsEllipseItem*>(item); if (vertex) { _isDrawingEdge=true; _drawingEdge = _scene.addLine(0.0, 0.0, mouseEvent->scenePos().x()-vertex->scenePos().x(), mouseEvent->scenePos().y()-vertex->scenePos().y(), QPen(Qt::black, 0)); _drawingEdge->setTransform(QTransform::fromTranslate(vertex->scenePos().x(), vertex->scenePos().y())); _drawingEdge->setZValue(VERTEX_CIRCLE_Z); _drawingEdge->setData(KEY_EDGE_VERTEX1, vertex->data(KEY_VERTEX_ID)); } } } }