将函数从'std :: vector <qstring>'转换为'QVariant'</qstring>

时间:2012-03-21 12:52:33

标签: qt stdvector qvariant

我正在开发一个基于QT的应用程序。我班级中的一个是QAbstractTableModel的子类。数据函数的返回类型为QVariant(联盟)。但我想返回自定义类型std::vector<QString>

了解Q_DECLARE_METATYPE();它为QVariant提供了新类型。

- 测试案例代码 -

#include <QApplication>
#include <QMetaType>
#include <vector>
#include<QVariant>


Q_DECLARE_METATYPE(std::vector<QString>);

QVariant data(int role)
{
    std::vector<QString> test1;   
    test1.push_back("Dtd");
    test1.push_back("Dtd"); 
    return test1;
}

int main(int argc, char *argv[])
{

    QApplication app(argc, argv);
     data(1);    
    return app.exec();
}

我收到此错误

  

错误:无法从'std :: vector&lt;转换'test1' QString&gt;'到'QVariant'

我错过了一些东西。请帮忙

1 个答案:

答案 0 :(得分:2)

即使您已声明了新的元类型,编译器仍然会看到您尝试返回已声明返回QVariant的std::vector。试试这个:

QVariant data(int role)
{
    std::vector<QString> test1;   
    test1.push_back("Dtd");
    test1.push_back("Dtd");
    QVariant var;
    var.setValue(test1); 
    return var;
}