[英]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.