2012-03-21 30 views
1

私はQTベースのアプリケーションで作業しています。私のクラスのうちの1つはQAbstractTableModelの子クラスです。データ機能がQVariantの戻り値の型(連合)が.But、私はカスタムタイプstd::vector<QString>変換関数return 'std :: vector <QString>'から 'QVariant'

を返すようにしたい程度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(); 
} 

私は、私はあなたが新しいメタタイプを宣言した場合であってもsomething.Pleaseヘルプ

答えて

2

を逃しています。このエラーに

error: could not convert ‘test1’ from ‘std::vector< QString >’ to ‘QVariant’

を取得していますコンパイラはまだあなたがQVariantを返すと宣言したstd::vectorを返そうとしているのを見ています。これを試してみてください:

QVariant data(int role) 
{ 
    std::vector<QString> test1; 
    test1.push_back("Dtd"); 
    test1.push_back("Dtd"); 
    QVariant var; 
    var.setValue(test1); 
    return var; 
} 
+0

興味深い解決策...私はこれを試してみてください...ありがとう –

関連する問題