在阅读了有趣的亲子系统之后,QObject
我想知道Qt开发人员使用它代替更传统的容器有多常见.假设存储器连续性不是必需的,似乎这提供了一些有趣的功能.
例如,您可以拥有一个QObject
并为其提供不同类型的子项,然后根据其类型轻松找到所有子项,从而为QObject提供动态的异类容器式功能,而不是传统容器所需的同类集合.
并QObject
自然地管理其孩子的记忆,这也很方便.
这是此功能的常用用途吗?
QObject::findChildren
可能比将对象存储在像QList这样的普通容器中要慢得多,因为:
以上所有内容如果您只是使用它就没有必要QList<Type*> my_objects
.在这种情况下:
QList<QPushButton*> panic_buttons
比...更清楚findChildren<QPushButton*>()
.如果你想制作一个异类容器,你可以使用QHash<any_type_identifier, QObject*>
.它会更快.
也许,findChildren方法有时可能更简单.但是如果你有很多对象或复杂的类,你最好使用普通的容器.您仍然可以使用QObject的内存管理而不会出现任何问题.
归档时间: |
|
查看次数: |
279 次 |
最近记录: |