我是Qt的新手。我有这个问题,我希望有一个方法来解决。 我想绘制一个道路网络,在整个程序执行过程中保持静态。在这个道路网络上,我想画一辆汽车(一个简单的圆形或矩形就足够了),从一个起点到终点在这个道路网上移动。
我从绘制小部件开始。我画了道路(使用多边形),到目前为止看起来还不错。
Q1)我现在如何绘制可移动的其他物体(汽车)?
我看到我需要重新粉刷。即我在我的小部件中定义的绘制功能将根据我为重新绘制设置的一些计时器一次又一次地调用。收到此事件后,我的汽车位置会发生变化。并重新绘制完整的场景。我是对的吗?
Q2)如何将道路网络视为一个单独的元素,将汽车视为单独的元素?也就像两个单独的小部件,我只发送重绘事件给我(例如汽车类)
Q3)我正在使用QPainter和QWidget类。用QGraphicsScene做这个更好吗?我能看到任何教程或示例代码吗?
答案 0 :(得分:0)
你应该明确地使用QGraphicsScene
将QGraphicsObject
放在哪里。这将使您能够更好地控制应该如何绘制。
您可以创建自定义QGraphicsObject
并编写paint
方法,该方法将定义您的对象应如何绘制 - 在这里您可以实现绘制汽车或道路网络的行为。至于教程,浏览QtCreator中包含的那些,你会发现。
答案 1 :(得分:0)
使用QGraphicsScene
和QGraphicsView
显示图片。它会自动执行所有绘图和重新绘制。它比自定义绘制小部件更方便(在某些情况下更有效)。它还可以单独处理您的对象,您可以单独移动它们。
使用QGraphicsScene::addPolygon
和类似方法添加道路。使用QGraphicsScene::addPixmap
添加汽车。使用QGraphicsItemAnimation
为汽车设置动画。
文档(包括示例):