c++ - setscene - Qt GUI 개발-QGraphicsView를 사용하여 2D 그리드 표시



user-interface (2)

Qt 개발이 처음인데 디자인 할 사용자 인터페이스에 대한 솔루션을 연구하려고합니다. 내 프로젝트는 글로벌지도를 움직이는 온라인 게임에서 플레이어를 시뮬레이션하는 것입니다. 맵을 표현하기 위해, 그리드의 각 공간이 맵의 영역을 나타내는 2D 그리드를 표시해야합니다. 그런 다음 각 플레이어의 위치를 ​​게임에 표시해야합니다. 백엔드는 2D 배열로 구현 된지도를 사용하여 모두 완벽하게 작동합니다. 그리드를 표시하는 방법에 막 달라 붙었습니다.

내가 한 연구 결과 QGraphicsView가이 일을하는 가장 좋은 방법이라고 믿게되었지만, 필요한 튜토리얼을 찾을 수없는 것 같습니다. 누군가가 이것을 구현하는 방법에 대한 조언을 주시면 많은 도움이 될 것입니다.

고마워, 댄


2D 그리드는 수평선과 수직선의 집합입니다. 500x500 맵이 있다고 가정하고 양방향의 선들 사이의 거리가 50 인 격자를 그려야합니다. 다음 샘플 코드는이를 달성하는 방법을 보여줍니다.

// create a scene and add it your view
QGraphicsScene* scene = new QGraphicsScene;
ui->view->setScene(scene);

// Add the vertical lines first, paint them red
for (int x=0; x<=500; x+=50)
    scene->addLine(x,0,x,500, QPen(Qt::red));

// Now add the horizontal lines, paint them green
for (int y=0; y<=500; y+=50)
    scene->addLine(0,y,500,y, QPen(Qt::green));

// Fit the view in the scene's bounding rect
ui->view->fitInView(scene->itemsVBoundingRect());

해당 examples 뿐만 아니라 QGraphicsViewQGraphicsScene 설명서를 확인해야합니다. 또한 Qt 개발자의 날로부터 그래픽보기 교육 비디오 또는 일부 그래픽보기 관련 비디오 를 볼 수 있습니다 .


글쎄, 일정한 격자 크기 나 제한된 수의 그리드 크기가 있다면 김프 나 다른 프로그램에서 그리드 블록을 그려서 백그라운드 브러시로 설정하는 것입니다 (그리드의 아래쪽과 오른쪽 만 그리기). 블록) qt는 이미지를 반복하여 풀 그리드를 표시합니다. 나는 이것이 성과를 위해서도 좋은 것이라고 생각한다.

이것은 내 프로그램 중 하나 인 10x10 픽셀에 사용 된 격자 이미지입니다.

그런 다음 QGraphicsScene setBackgroundBrush를 다음과 같이 호출하십시오.

    scene->setBackgroundBrush(QBrush(QPixmap(":/grid/grid10.png")));




qgraphicsview