문제

클래스 PKG가 있으며 QVARIART 형태로 사용해야합니다.

내 pkg.h의 끝에 나는 다음과 같습니다.

Q_DECLARE_METATYPE(Pkg)

그리고 이것은 컴파일 오류를 제공하지 않지만 main.cpp에서는해야합니다.

qRegisterMetaType<Pkg>("Pkg");

그리고 이것은 오류도 제공하지 않지만 QVariant (PKG)를 만들려고 할 때 다음과 같은 많은 오류가 발생합니다.

In member function 'void MainWindow::FillPackagesList()':  
mainWin.cpp:233: error: 'qRegisterMetaType' isnot a member of 'QMetaType' mainWin.cpp:234: error: no matching function for call to QVariant::QVariant(Pkg&)'                                             

/usr/lib/qt/include/QtCore/qvariant.h:208: note: QVariant::QVariant(Qt::GlobalColor)           
/usr/lib/qt/include/QtCore/qvariant.h:206: note: QVariant::QVariant(const QRegExp&)            
/usr/lib/qt/include/QtCore/qvariant.h:204: note: QVariant::QVariant(const QLocale&)            
/usr/lib/qt/include/QtCore/qvariant.h:203: note: QVariant::QVariant(const QUrl&)               
/usr/lib/qt/include/QtCore/qvariant.h:201: note: QVariant::QVariant(const QRectF&)             
/usr/lib/qt/include/QtCore/qvariant.h:200: note: QVariant::QVariant(const QRect&)          

그리고 다시 오류에 대한 오류 ...

도움이 되었습니까?

해결책

QVARIART 생성자는 기존 유형을 취하지 않습니다. 사용해야합니다 qvariant :: setValue () 또는 qvariantfromvalue.

다른 팁

AHHHHH SOLVED, 많은 감사, 나는 사용했다.

 item->data(1,Qt::UserRole).value<Pkg>();

항목은이 경우 선택한 QtreeWidgetItem입니다.

connect(packList,SIGNAL(itemClicked(QTreeWidgetItem*, int)), SLOT(setActualPackage(QTreeWidgetItem*)));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top