1

我正在开发一个基于 QT 的应用程序。我的一个类是QAbstractTableModel的子类。数据函数的返回类型为QVariant (Union)。但我想返回自定义类型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();
}

我收到此错误

错误:无法将 'test1' 从 'std::vector< QString >' 转换为 'QVariant'</p>

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

4

1 回答 1

2

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

QVariant data(int role)
{
    std::vector<QString> test1;   
    test1.push_back("Dtd");
    test1.push_back("Dtd");
    QVariant var;
    var.setValue(test1); 
    return var;
}
于 2012-03-21T13:02:37.057 回答