将函数返回从“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&lt;QString&gt;

了解了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”的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中,是不是可以从将结束父函数的嵌套函数中返回?

为啥 forEach 函数不让我返回一个对象,甚至只是将它从函数中传递出去?

如何将变量从 PyQt5 UI 返回到 Main 函数 - Python

如何使用 ctypes 将数组从 C++ 函数返回到 Python

将数据从 firebase 函数返回到应用程序

如何从函数(UDF)返回表变量?