0

我是 Qt 的新手。我有这个问题,我想有一种方法来解决。我想画一个道路网络,在整个程序执行过程中保持静态。在这个路网上,然后我想画一辆汽车(一个简单的圆形或矩形就足够了),它在这个路网上从起点移动到终点。

我从在小部件上绘图开始。我画了道路(使用多边形),到目前为止看起来还不错。

Q1) 我现在如何绘制另一个可以移动的物体(汽车)?

我看我需要重新粉刷。即,我在小部件中定义的绘制函数将根据我为重新绘制设置的某个计时器一次又一次地调用。收到此事件后,我的汽车位置发生了变化。并且重新绘制了完整的场景。我对么?

Q2) 我如何将道路网络视为一个单独的元素,将汽车视为单独的元素?即像两个单独的小部件,这样我只向我的(例如汽车类)发送重绘事件

Q3) 我正在使用 QPainter 和 QWidget 类。用 QGraphicsScene 做这个更好吗?我可以看到任何教程或示例代码吗?

4

2 回答 2

0

您绝对应该使用QGraphicsScene您将放置的位置QGraphicsObject。这将使您能够更好地控制事物的绘制方式。

您可以创建自定义QGraphicsObject和编写paint方法,该方法将定义您的对象应该如何绘制 - 在这里您可以实现绘制汽车或道路网络的行为。至于教程,浏览那些包含在 QtCreator 中的,你会发现。

于 2013-07-06T15:15:05.463 回答
0

使用QGraphicsSceneQGraphicsView显示图片。它会自动执行所有绘图和重绘。它比自定义绘制小部件更方便(并且在某些情况下更有效)。它还单独处理您的对象,您可以独立移动它们。

使用QGraphicsScene::addPolygon和类似的方法来添加道路。用于QGraphicsScene::addPixmap添加汽车。用于QGraphicsItemAnimation为汽车设置动画。

文档(包括示例):

于 2013-07-06T16:54:48.140 回答