преобразовать возврат функции из ‘std::vector‹QString›’ в ‘QVariant’

Я работаю над приложением на основе 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»

Я что-то упускаю. Пожалуйста, помогите


person Community    schedule 21.03.2012    source источник


Ответы (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;
}
person teukkam    schedule 21.03.2012