Ho una classe e voglio usarla in un Qvariant, quindi ho bisogno di dichiarare e registrare il tipo Meta. Questo è quello che ho fatto:Registrare un tipo meta in Qt
class blabla: public QThread
{
Q_OBJECT
.
.
.
};
Q_DECLARE_METATYPE(blabla)
Ma questo codice mi sta dando errore:
In copy constructor ‘QThread::QThread(const QThread&)’:
instantiated from ‘void* qMetaTypeConstructHelper(const T*) [with T = blabla]’
instantiated from ‘int qRegisterMetaType(const char*, T*) [with T = blabla]’
instantiated from here
‘QObject::QObject(const QObject&)’ is private
within this context
In file included from UnitTest.cpp:16:0:
blabla.h: In copy constructor ‘blabla::blabla(const blabla&)’:
note: synthesized method ‘QThread::QThread(const QThread&)’ first required here
In file included from /usr/include/QtCore/qvariant.h:48:0,
from /usr/include/QtCore/qabstractitemmodel.h:45,
from /usr/include/QtCore/QtCore:7,
from /usr/include/QtTest/QtTest:3,
from UnitTest.h:16,
from UnitTest.cpp:14:
In function ‘void* qMetaTypeConstructHelper(const T*) [with T = blabla]’:
note: synthesized method ‘blabla::blabla(const blabla&)’ first required here
make[1]: *** [build/obj/UnitTest.o] Error 1
Credo che ho bisogno di registrare il mio met-tipo, ma non sono sicuro dove andare a qRegisterMetaType<MyClass>("MyClass");
. Ho provato ad averlo dopo la macro di dichiarazione del tipo meta, ma ha provocato un errore. Apprezzi qualsiasi commento o suggerimento che mi indirizza sulla giusta direzione.
Credo di registrare i miei metatipi nel file sorgente C++ che per la classe che sto registrando. E come diceva cmannett85, io uso i puntatori alle classi e non agli oggetti. – drescherjm