有没有一种方法可以将QVariant与QVector一起使用

Is there a way to use QVariant with QVector?

本文关键字:QVariant QVector 一起 方法 一种 有没有      更新时间:2023-10-16

有没有一种方法将QVariantQVector

我需要实现一个函数来比较两个向量,例如:

#include <QDebug>
#include <QVector>
#include <QString>
bool compareVectors(QVector<QVariant> vec1, QVector<QVariant> vec2)
{
    qDebug() << "Comparing vectors!";
    if( vec1 != vec2 )
    {
        qDebug() << "The vectors are different!";
        return false;
    }
    qDebug() << "The vectors are equal!";
    return true;
}
int main()
{
    QVector<double> v1;
    QVector<double> v2;
    v1 << 1 << 2;
    v2 << 3 << 4;
    QVector<QString> v3;
    QVector<QString> v4;
    v3 << "1" << "2";
    v4 << "3" << "4";
    compareVectors(v1, v1);
    compareVectors(v3, v4);
    return 0;
}

通过参数传递的两个向量将始终具有相同的数据类型,例如:

compareVectors(QVector<int>, QVector<int>);
compareVectors(QVector<double>, QVector<double>);
compareVectors(QVector<QColor>, QVector<QColor>);
compareVectors(QVector<QString>, QVector<QString>);

当我尝试运行上述代码时,我会收到以下错误消息:

错误:呼叫" compareVector'

的匹配函数无匹配功能

注意:我正在使用QT 5.3。

当参数类型为 QVector<QVariant>时,您不能使用QVector<int>(或QVector<double>)。

我建议将compareVectors作为功能模板。

template <typename T>
bool compareVectors(QVector<T> vec1, QVector<T> vec2)
{
    qDebug() << "Comparing vectors!";
    if( vec1 != vec2 )
    {
        qDebug() << "The vectors are different!";
        return false;
    }
    qDebug() << "The vectors are equal!";
    return true;
}