該問題適用於qt庫的類QGraphicsView
。 但是,問題更一般。所以,如果我在qt中沒有遺漏任何特殊的機制,那麼可能會在不知道qt的情況下討論它。QGraphicsView和裝飾器模式
我將子類QGraphicsView
添加一些我需要的功能。 例如我有一個ScalableView
,PannableView
和LabeledView
添加獨立的功能。
我現在使用的子類在以下意義上是線性的: ScalableView
是從QGraphics
視圖派生而來的。 PannableView
源自ScalableView
查看。 LabeledView
源自PannableView
的觀點。
由於這些功能是獨立的,因此存在設計缺陷。 應用修飾器模式來看看這對我來說似乎很合適。 存在的問題是,QGraphicsView
不是接口,並且不存在接口類,如QAbstractGraphicsView。所以,對我而言,這種模式如何實施尚不清楚。
不同的想法是使用模板。所以我可以從模板T
推導出每個視圖。然後,我可以進行檢測,如ScalableView<PannableView<LabeledView>>>
。
您是否看到更好的解決方案?我更喜歡在這種情況下實現裝飾器模式的方式,因爲我想避免使用許多模板類來增加編譯時間。
什麼是一個ScalableView和PannableView添加到的QGraphicsView,其中由類本身是不是已經可用?如果你只是刪除功能,那麼這是什麼原因? – TheDarkKnight
這不是刪除,它是添加功能。它使得視圖可以使用鼠標滾輪進行縮放,並提供了適合視圖的功能。 PannableView使用鼠標提供左擊平移。 – SebastianK
爲什麼不從QGraphicsView繼承一次,你是否需要不同的視圖與不同的功能? – TheDarkKnight