QVariant 및 QVregisterMetattype 질문
문제
클래스 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*)));
제휴하지 않습니다 StackOverflow