gpt4 book ai didi

c++ - QVariant 只接受 QList 而不是 QVector 或 QLinkedList 是有原因的吗

转载 作者:可可西里 更新时间:2023-11-01 18:08:29 26 4
gpt4 key购买 nike

QVariant似乎接受 QList<QVariant>而不是 QVector<QVariant>也不QLinkedList<QVariant> .仅仅是因为它看到了QList吗? , QVectorQLinkedList作为基本相似(在抽象意义上)的数据结构?

我正在添加 std::vectorQVariant .如果仅使用 Qt API 而不是手动转换,则需要两次转换:

  1. 来自 std::vectorQVector
  2. 来自 QVectorQList

PS:我知道我可以添加 std::vectorQVariant直接与 this但我相信在那种情况下它不会知道它是一个对象 vector 。

最佳答案

调用 qRegisterMetaType 函数后,您可以将所有内容存储在 QVariant 中。

所以如果你调用qRegisterMetaType<std::vector<SomeObject> >("std::vector<SomeObject>"); QVariant 将存储 std::vector。从执行函数中读取这些值 T QVariant::value () const , 用于编写使用函数 void QVariant::setValue ( const T & value )

PS: I'm aware that I can add std::vector to QVariant directly with this but I believe in that case it won't know that it's a vector of objects.

当您将类型注册到 QVariant 时,它会在操作该类型的项目时调用它的默认构造函数、复制构造函数和析构函数。所以将它与类和对象一起使用是没有坏处的。

关于c++ - QVariant 只接受 QList 而不是 QVector 或 QLinkedList 是有原因的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6177906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com