gpt4 book ai didi

c++ - QVariant.toXXX 函数的函数指针

转载 作者:行者123 更新时间:2023-11-30 02:59:13 26 4
gpt4 key购买 nike

我不知道如何创建指向 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;
}

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

最佳答案

你不需要那样做。使用 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;
}

关于c++ - QVariant.toXXX 函数的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13087966/

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