[英]Qt Command Pattern QHash/QMap
我最近使用以下命令在Java中實現了命令設計模式:
private HashMap<Component, CommandInterface> commands;
其中Component
是任何Java組件( JButton
, JMenuItem
,...),而CommandInterface
是我的Command-Classes的接口。
所以我的問題是:如何使用C ++ / Qt完成此操作?
我已經使用QMap
和QHash
,但他們都需要一個重載運營商( operator<
或operator==
),為他們的Key
-值。
是從QObject
和重載operator<
得出的唯一可能方法嗎?
提前致謝。
Java和C ++之間的一個非常重要的區別是C ++區分了對象指針(Java中的引用) QObject* o;
和對象值QObject o;
話雖這么說,Qt強烈鼓勵在堆上創建QObject(使用new)。 因此,您最終得到了QObject指針QObject*
。 然后您的哈希圖將起作用,因為比較指針就像比較整數一樣。
QHash<QObject*, CommandInterface*> commands;
但是,不要忘記管理對象的生命周期,因為您沒有像Java那樣的垃圾收集器。 您可以根據需要使用Qt樹所有權以方便使用: http : //doc.qt.io/qt-5/objecttrees.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.