1

私は QT ベースのアプリケーションに取り組んでいます。私のクラスの 1つは、 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' に変換できませんでした</p>

足りないものがあります。助けてください

4

1 に答える 1

2

新しいメタタイプを宣言した場合でも、コンパイラーは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;
}
于 2012-03-21T13:02:37.057 に答える