Qt GUI开发 - 使用QGraphicsView显示2D网格

dlw*_*s02 12 c++ user-interface qt qgraphicsview

我是Qt开发的新手,所以我正在尝试研究我需要设计的用户界面的解决方案.我的项目是模拟在全球地图中移动的在线游戏中的玩家.为了表示地图,我需要显示2D网格,网格中的每个空间代表地图的一个区域.然后我需要显示游戏中每个玩家的位置.后端完全正常工作,地图实现为2D阵列.我只是坚持如何显示网格.

我所做的研究让我相信QGraphicsView是最好的方法,但我似乎无法找到与我需要的相关的教程.如果有人对如何实现这一点有任何提示,将不胜感激.

谢谢,丹

pne*_*zis 10

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());
Run Code Online (Sandbox Code Playgroud)

您应该检查QGraphicsViewQGraphicsScene文档以及相应的示例.您还可以在Qt开发人员日观看图形视图培训视频或一些图形视图相关视频.