나는 다이어그램 (Fluxogram)를 만들고있어 프로그램의 부족과 일 동안 나는이 문제에 붙어 :Qt는 : 사용자 정의 QGraphicsItem가 표시되지 boundingRect() 센터보기
내가 확장 사용자 정의 QGraphicsScene
이 항목을 오른쪽에 배치 할 때마다 가로로 나타납니다. 문제는 내 사용자 지정 화살표 (QGraphicsPathItem
상속)가 boundingRect()
센터가보기에서 스크롤 될 때마다 장면에서 사라지는 것입니다. 장면이 확장 될 때마다 sceneRect()
이고보기의 sceneRect()
도 업데이트됩니다.
set ui->graphicsView->setViewportUpdateMode(QGraphicsView::FullViewportUpdate)
항목 플래그뿐만 아니라 항목 QGraphicsItem::ItemIgnoresTransformations
및 QGraphicsItem::ItemSendsGeometryChanges
, setActive(true)
, 그리고 매번 나는 내가 update(sceneRect())
메서드를 호출 장면에 화살표를 추가
나는했습니다. 그래도보기를 스크롤 할 때마다 화살표 boundingRect()
센터가보기에서 멀리 이동하면 모든 화살표가 사라집니다. 다시 스크롤하여 boundingRect() 센터가 뷰에 들어가면 모든 화살표가 다시 나타납니다.
내가 누락 된 부분을 누군가에게 알려줄 수 있습니까? Qt의 예제 프로젝트 다이어그램을 참조로 사용 했으므로 많은 코드가 비슷합니다 ("프레스 항목 toolButton -> 클릭하여 장면"관계를 삽입하여 객체를 연결하는 화살표를 배치하는 방법). ..).
한편 나는 내 문제가 무엇인지 보여줄 수있는 최소한의 실행 예제를 만들려고 노력할 것입니다.
나는이 문제를 해결하기 위해 지금까지 사용해 왔던 방법을 유지할 수있는 가장 간단한 예를 만들었습니다. pastebin에 붙여 넣었습니다 (여기에 사용할 수 있는지 모르겠습니다. 어떻게해야하는지 알 수 없으므로 장면의 위치 지정 및 재조정을 결정하는 데 많은 코딩이 필요합니다.) : 헤더 파일 : http://pastebin.com/43Vzkrkq; C++ 파일 : http://pastebin.com/aLuE5Yg4; UI 파일 : http://pastebin.com/1mHWL0hG – Qvaliz
문제는 해당 항목의 boundingRect에있는 것으로 의심됩니다. 페인트 기능에서 그리기를 시도하고 예상대로 표시되는지 확인하십시오. – TheDarkKnight
그것은 화살표가 연결되어있는 2 개의 항목을 둘러싸는 직사각형을 그립니다. 그 점은 격자의 가장 오른쪽 부분에 항목을 추가 할 때 장면이 가로로 확장되고 스크롤하면 boundingRect 중심 (항목 (0,0))이보기의 시야에서 벗어나면 전체 화살표가 사라지고 가운데가 다시 표시 될 때까지 스크롤하면 전체 화살표가 다시 나타납니다. 내가 필요한 것은 보이는 영역이 아무리 작아도 항상 화살표를 보이게하는 것입니다. – Qvaliz