2013-07-06 132 views
0

我是Qt的新手。我有這個問題,我想要一個方法來解決。 我想繪製一個道路網絡,在整個程序執行過程中保持靜態。在這個道路網絡上,我然後想要畫一輛從起點到終點在這條道路網上移動的汽車(一個簡單的圓或矩形就足夠了)。Qt C++繪圖和動畫

我開始繪製一個小部件。我畫了道路(使用多邊形),到目前爲止它看起來沒問題。 Q1)如何繪製可移動的其他物體(汽車)?

Q1)如何繪製可移動的其他物體(汽車)?

我看到我需要重繪。即我在我的小部件中定義的繪畫函數將根據我設置的重新繪製的計時器一次又一次地調用。收到此事件後,我的車的位置發生變化。完整的場景被重新繪製。我對麼? Q2)如何將道路網作爲一個單獨的元素來處理,而汽車作爲單獨的元素?即像兩個獨立的小部件,因此我只向我發送重繪事件(例如汽車類)

Q3)我正在使用QPainter和QWidget類。用QGraphicsScene做這個更好嗎?有我可以看到的任何教程或示例代碼嗎?

回答

0

您應該確定使用QGraphicsScene,您將在此放置QGraphicsObject。這將允許你對事物的繪製有很大的控制。

您可以創建自定義QGraphicsObject並編寫paint方法,該方法將定義您的對象應該如何着色 - 在這裏您可以實現繪製汽車或道路網絡的行爲。至於教程,瀏覽那些包含在QtCreator中的,你會發現。

0

使用QGraphicsSceneQGraphicsView來顯示圖片。它會自動執行所有繪圖和重新繪製。它比自定義繪製小部件更方便(在某些情況下效率更高)。它也分別處理你的對象,你可以獨立地移動它們。使用QGraphicsScene::addPolygon和類似的方法來添加道路。使用QGraphicsScene::addPixmap添加汽車。使用QGraphicsItemAnimation爲汽車製作動畫。

文檔(包括實施例):