2012-03-21 9 views
1

QT 기반 응용 프로그램에서 작업 중입니다. 내 수업 중 하나는 QAbstractTableModel의 하위 클래스입니다. 데이터 기능은 QVariant (연합)의 반환 유형이 나누었다 내가변환 함수 반환 'std :: vector <QString>'에서 'QVariant'

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(); 
} 

나는이 오류 나는 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

재미있는 해결책 ... 나는 이것을 시도 할 것입니다 ... thankz –

관련 문제