2014-11-26 6 views
0

그래서 그래픽보기를 클릭하고 클릭 한 정확한 위치에 타원이 나타나는이 앱을 제작하고 있습니다. 좋고 좋은, 지금 나는이 타원에 번호를 매기기를 원한다. 타원 내부에 텍스트를 설정하고 싶습니다. 마찬가지로 그래픽 뷰에서 첫 번째 시간을 클릭하면 타원이 나타나고 그 안에 "1"이라고 쓰여지고 다른 곳을 다시 클릭하면 "2"라는 텍스트가있는 다른 타원이 나타납니다.Qt GraphicsEllipseItem 번호 매기기

+0

에 오신 것을 환영합니다. 당신은 당신의 문제를 아주 멋지다고 말했습니다. 너에게 좋다. 지금 가지고있는 작업 코드를 게시하면 사람들이 자신의 디자인에 갇혀있는 곳을 더 쉽게 이해할 수 있습니다. 이 타원에는 QGraphicsItem에서 파생 된 클래스가 있나요? –

답변

0

void Widget::mousePressEvent(QMouseEvent *mouseEvent) 
 
{ 
 
    QPointF p = mouseEvent->localPos(); 
 
    if (mouseEvent->button() == Qt::LeftButton && 
 
     p.x() >= 20 && p.x() <= 780 && p.y() >= 20 && p.y() <= 780) 
 
    { 
 
     int l = 40; 
 
     count++; 
 
     elipse[count] = scene->addEllipse(p.x()-l/2-14, p.y()-l/2-14, l, l, QPen(Qt::black)); 
 
     elipse[count]->setFlags(QGraphicsEllipseItem::ItemIsMovable)  
 
    } 
 
}
그래서이 기능입니다. 텍스트를 추가하고 싶습니다. 항목이 움직일 수 있으므로 아이템이 움직이면 텍스트도 이동해야합니다.

EDIT! 나는 그것을 알아 냈다!

void Widget::mousePressEvent(QMouseEvent *mouseEvent) 
 
{ 
 
    QPointF p = mouseEvent->localPos(); 
 
    if (mouseEvent->button() == Qt::LeftButton && 
 
     p.x() >= 20 && p.x() <= 780 && p.y() >= 20 && p.y() <= 780) 
 
    { 
 
     int l = 40; 
 
     count++; 
 
     elipse[count] = scene->addEllipse(p.x()-l/2-14, p.y()-l/2-14, l, l, QPen(Qt::black)); 
 
     elipse[count]->setFlags(QGraphicsEllipseItem::ItemIsMovable); 
 

 
     enumbering[count] = scene->addSimpleText(QString::number(count)); 
 
     enumbering[count]->setPos(p.x()-l/2+3, p.y()-l/2-1); 
 

 
     enumbering[count]->setParentItem(elipse[count]); 
 
    } 
 
}

+0

다른 질문으로 자신의 질문에 답하고 편집하지 마십시오. 그냥 질문을 편집 –

+0

좋아, 이제 귀하의 답변은 실제로 답변이므로 괜찮습니다. –

1

(아마도이 ​​이미 완료) QGraphicsEllipseItem에서 파생, 타원을 그리는 클래스를 만듭니다 삽입 setpos()

scene->addItem() 움직임 타원과 함께 현장에 타원

해당 클래스에서 정적 멤버 static int ellipse_count을 만들고 0으로 초기화합니다. 타원을 만들 때마다 카운터를 늘리고 매번 감소시킵니다 (put

타원 클래스에 QGraphicsTextItem으로 멤버를 추가하고 개체를 생성하여 타원 생성자에 배치 할 수 있습니다. 이렇게하면 타원형 참조 내부에 Text 항목을 상대 좌표로 배치 할 수 있으며 타원과 함께 이동합니다.