我正在开发一个基于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'
我错过了一些东西。请帮忙
答案 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;
}