将函数返回从“std::vector<QString>”转换为“QVariant”
Posted
技术标签:
【中文标题】将函数返回从“std::vector<QString>”转换为“QVariant”【英文标题】:convert function return from ‘std::vector<QString>’ to ‘QVariant’ 【发布时间】:2012-03-21 12:52:32 【问题描述】:我正在开发基于 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”转换为“QVariant”
我错过了一些东西。请帮助
【问题讨论】:
【参考方案1】:即使你声明了一个新的元类型,编译器仍然会看到你试图返回一个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;
【讨论】:
以上是关于将函数返回从“std::vector<QString>”转换为“QVariant”的主要内容,如果未能解决你的问题,请参考以下文章
为啥 forEach 函数不让我返回一个对象,甚至只是将它从函数中传递出去?
如何将变量从 PyQt5 UI 返回到 Main 函数 - Python