非QObject内的Qt容器
Qt containers inside non QObject
在使用Qt容器并切换回c ++ stl之后,我发现我对Qt容器更加熟悉。有时写 stl 似乎我想以一种非常冗长的方式解决 rebus。
所以我只是想知道在某些非QObjects衍生物中使用Qt容器实例是否有一些副作用
好吧,看看你想要的不同类,并检查是否有任何依赖项。例如,QList
不依赖于任何特定的Qt对象,据我所知,它不是一个Q_OBJECT
,应该很好。此处列出的所有其他容器类可能也是如此。
不过,您必须关心的是许可。由于这是在非常具体的规则下可用的代码,因此您不能简单地使用这些类并在您的商业应用程序中使用它们。- 编辑:当然,只要你动态地链接它们,就可以了。我的意思不是说"这是不可能的",而是要强调"简单"。
Qt容器可以毫无问题地与"常规"对象一起使用;但请记住,它们不会利用STL容器使用的某些C++功能,因此它们可能会对您的类提出额外的要求。
例如,QVector
(以及其他Qt容器(需要一个默认的构造函数,并且在添加元素时,它会执行默认的构造+赋值,而STL使用放置new只使用复制构造函数;此外,从C++11开始,STL容器支持移动语义,而目前Qt容器只是复制对象。
无效状态并使用隐式共享语义(因此默认构造,复制构造函数和赋值通常很便宜(,但是如果您的对象具有昂贵的副本(可能来自嵌入具有"完整复制"语义的STL容器(,则可能会出现问题。
此外,如果你打算以某种方式分发你的程序,你应该考虑是否值得引入一个相当沉重的依赖项,比如Qt,只用于容器类。
如果你做了正确的包含,你应该能够使用它们!
Qt容器与QObject功能完全无关。Qt本身使用了许多非QObject派生类的容器 - QStringList
是一个常见的例子。Qt本身也在非QObject派生类的方法中使用容器。
- 将 STL 算法与 Qt 容器结合使用
- Qt - 如何在容器上设置最小大小,使其不会扭曲子项
- 是否有QT C 数据容器可用于动态大小结构
- 使用 QSet 作为 Qt 映射容器中的键
- 错误 C2059:尝试在已知大小的头文件中创建 Qt 容器时为"常量"
- 二维动态容器 qt
- 非QObject内的Qt容器
- Qt容器 - 我应该选择哪个
- 什么是最适合QAbstractListModel和QListView的Qt容器
- 检查迭代器是否对QT容器有效
- 容器的Qt内存管理
- 如何深度复制QMap和其他Qt容器
- *类型元素容器的qt排序
- 如何将Qt容器作为参数传递给共享库的函数
- Qt容器(QVector,QList)::end()返回一个无法引用的迭代器
- 如何从TextInput在一个特殊的容器文本[诺基亚Qt Qml]
- 向Qt脚本引擎公开一个基于模板的容器类
- QT容器类问题
- 为什么Qt foreach要创建一个容器的副本?
- 有任何可观察的Qt容器类吗?