Frage

Ich habe eine Klasse Pkg und ich brauche es unter Form von QVariant zu verwenden.

Am Ende meines Pkg.h ich habe:

Q_DECLARE_METATYPE(Pkg)

und diese geben keine Fehler kompilieren, aber in meinem main.cpp ich tun:

qRegisterMetaType<Pkg>("Pkg");

und diese Fehler nicht geben, aber wenn ich versuche, eine QVariant (Pkg) zu erstellen, erhalte ich viele Fehler wie:

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&)          

und Fehler über Fehler wieder ...

War es hilfreich?

Lösung

Der QVariant Konstruktor nimmt nicht irgendeinen Typen. Sie müssen verwenden QVariant :: setValue () oder qVariantFromValue .

Andere Tipps

Ahhhh gelöst, vielen Dank, ich habe verwendet:

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

Element ist die QTreeWidgetItem in diesem Fall ausgewählt:

connect(packList,SIGNAL(itemClicked(QTreeWidgetItem*, int)), SLOT(setActualPackage(QTreeWidgetItem*)));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top