преобразовать функцию возврата из ‘std :: vector <QString>’в‘ QVariant ’ - PullRequest
1 голос
/ 21 марта 2012

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

2 голосов
/ 21 марта 2012

Даже если вы объявили новый метатип, компилятор все равно увидит, что вы пытаетесь вернуть 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;
}
...