我正在做一個圖(Fluxogram)計劃和天我堅持這個問題:的Qt:自定義的QGraphicsItem沒有顯示時boundingRect()中心拿出來看
我有一個自定義QGraphicsScene
一個可擴展水平地每當我把一個項目放在最右邊的區域時。問題是我的自定義箭頭(它們繼承QGraphicsPathItem
)從場景中消失,只要boundingRect()
中心從視圖中滾動出來。每當場景擴展時,它的sceneRect()
和視圖的sceneRect()
都會更新。
我有:
set ui->graphicsView->setViewportUpdateMode(QGraphicsView::FullViewportUpdate)
項標誌的項目QGraphicsItem::ItemIgnoresTransformations
和QGraphicsItem::ItemSendsGeometryChanges
,setActive(true)
爲好,每次我加一個箭頭現場我稱之爲update(sceneRect())
方法。不過,每當我滾動視圖時,只要箭頭的中心遠離視圖,所有箭頭消失。如果向後滾動並且boundingRect()中心進入視圖,則所有箭頭都會再次出現。
有人可以給我一個我可能會錯過的小費嗎?我一直在使用Qt的示例項目圖形作爲參考,所以我的很多代碼是類似的(「按項目工具按鈕 - >點擊場景」插入項目的關係,他們放置箭頭連接對象的方式。 ..)。
與此同時,我會嘗試做一個最小的運行示例,可以顯示我的問題是什麼。
我做了最簡單的例子,我可以保留迄今爲止用於解決此問題的方法。我已經將它粘貼到了pastebin(我不知道我是否可以在這裏使用它,所以請讓我知道它是不是應該怎麼做,只是有很多編碼來確定場景的定位和重新調整): 頭文件:http://pastebin.com/43Vzkrkq; C++文件:http://pastebin.com/aLuE5Yg4; UI文件:http://pastebin.com/1mHWL0hG – Qvaliz 2014-10-20 12:16:03
我懷疑問題在於該項目的boundingRect。嘗試在繪製函數中繪製它,看看它是否是你期望看到的。 – TheDarkKnight 2014-10-20 12:53:52
這是,它繪製箭頭連接的2個物品周圍的矩形。問題是,當我們在網格的最右邊添加一些項目時,場景會水平展開,如果我們滾動,只要boundingRect中心(item的(0,0))不在視圖的視線內,整個箭頭消失,如果我們滾動,直到中心再次可見,則整個箭頭再次出現。我需要的是無論可見區域有多小,始終都能看到箭頭。 – Qvaliz 2014-10-20 13:12:03