qstring变量怎样转换为qvariant

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qstring变量怎样转换为qvariant相关的知识,希望对你有一定的参考价值。

参考技术A 编程接口与QString类似,有mid,left,right,trimmed,toLower,toUpper,simplified等函数。 3.QVariant:用来处理那些能够支持不同数据类型本回答被提问者和网友采纳

QVariant.toXXX 函数的函数指针

【中文标题】QVariant.toXXX 函数的函数指针【英文标题】:Function pointer for QVariant.toXXX function 【发布时间】:2012-10-26 13:34:27 【问题描述】:

我不知道如何创建指向 Qt 库中处理 QVariant 的方法的函数指针。我的代码中有很多地方将 QVariantList 转换为 QList,其中 SomeType 可以是 QString、int、QMap 或其他可以保存在 QVariant 对象中的变量。在我要使用该方法时,类型是已知的。

我可以使用模板编写方法吗?下面是我想写的方法的伪代码

template <class T>
QList<T> QVariantListToQList(QVariantList qvList, (* QVariant::toXXX()) convert)

    QList<T> qlistOfMembers;
    foreach(T listMember, qvList)
    
        qlist.OfMember.append(listMmeber.convert());
    
    return qlistOfMembers;

将不胜感激提供讨论此问题的文档的链接或使用正确语法的方法。

【问题讨论】:

【参考方案1】:

您不需要这样做。使用 qvariant_castQVariant::value 函数,并完全删除该参数。

类似:

template <class T>
QList<T> QVariantListToQList(QVariantList const& qvList)

    QList<T> qlistOfMembers;
    foreach(QVariant const& listMember, qvList)
    
        qlistOfMembers.append(listMember.value<T>());
    
    return qlistOfMembers;

如果你想按照自己的方式去做,语法会有点棘手:

#include <QtCore>

template <class T>
QList<T> QVariantListToQList(QVariantList const& qvList, 
                             T (QVariant::*convert)() const)

    QList<T> qlistOfMembers;
    foreach(QVariant const& listMember, qvList)
    
        qlistOfMembers.append((listMember.*convert)());
    
    return qlistOfMembers;


int main(void)

    QVariantList vl;
    vl.append(QVariant(QString("hello")));
    qDebug() << vl;
    QList<QString> sl = QVariantListToQList<QString>(vl, &QVariant::toString);
    qDebug() << sl;

【讨论】:

第一个函数正是我所需要的。第二个功能正是我所要求的。谢谢 已发布后续问题。 so link。 (如果 QVariant 是 QVariantMap 并且我有一个转换函数可以将 QVariantMap 转换为 MyClass,我可以传递一个函数指针来完成这项工作吗?)

以上是关于qstring变量怎样转换为qvariant的主要内容,如果未能解决你的问题,请参考以下文章

vs2013 提示无法从void转换为char

QT3中怎么实现QString与char*的转换

QString类型和unsigned char data怎样相互转换

怎么样将QString转换为QTime,有这样的函数吗

字符串怎么转换为unsigned char数组

Qt中 QString 和int, char等的“相互”转换