簡體   English   中英

Qt命令模式QHash / QMap

[英]Qt Command Pattern QHash/QMap

我最近使用以下命令在Java中實現了命令設計模式:

private HashMap<Component, CommandInterface> commands;

其中Component是任何Java組件( JButtonJMenuItem ,...),而CommandInterface是我的Command-Classes的接口。

所以我的問題是:如何使用C ++ / Qt完成此操作?

我已經使用QMapQHash ,但他們都需要一個重載運營商( 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM