Russian Qt Forum

Qt => Общие вопросы => Тема начата: em от Май 29, 2008, 16:38



Название: qRegisterMetaType (expected constructor, destructor, or type conversion before)
Отправлено: em от Май 29, 2008, 16:38
Всем здравствуйте)

Определил в .h файле структуру и решил зарегистрировать её как мета тип для возможности использования в Signal - Slot в queued сигналах
Код:
struct MyType
{
QMap<int, QString> myMap;
};
Q_DECLARE_METATYPE(MyType);
qRegisterMetaType<MyType>("MyType");
компилятор ругается на строчку qRegisterMetaType<MyType>("MyType"); говорит мол expected constructor, destructor, or type conversion before '(' token

Не пойму что надо ещё?


Название: Re: qRegisterMetaType (expected constructor, destructor, or type conversion before)
Отправлено: lit-uriy от Май 29, 2008, 17:59
может целиком писать надо:
struct MyType
?


Название: Re: qRegisterMetaType (expected constructor, destructor, or type conversion before)
Отправлено: em от Май 29, 2008, 19:16
Я и так целиком писал =) в структуре мне нужна всего 1 переменная =)

Ееееее разобраслся)

может комуто понадобится:
проблема была в том что qRegisterMetaType надо писать в конструкторе! того класса где вы используете этот зарегистрированный тип, либо в конструкторе регистрируемого типа,
 например

Код:
#ifndef MYTYPE_H_
#define MYTYPE_H_

#include <QMap>
#include <QString>
#include <QMetaType>

class MyTypeMap
{
public:
MyTypeMap();
virtual ~MyTypeMap();
QMap<int, QString> voltMap;
};

Q_DECLARE_METATYPE(MyTypeMap);

#endif /*MYTYPE_H_*/


Код:
#include "mytype.h"


MyTypeMap::MyTypeMap()
{

qRegisterMetaType<MyTypeMap>("MyTypeMap");

}

MyTypeMap::~MyTypeMap()
{
}


либо qRegisterMetaType<MyTypeMap>("MyTypeMap");  в конструктарах классов где использутся


Название: Re: qRegisterMetaType (expected constructor, destructor, or type conversion before)
Отправлено: vaprele07 от Май 30, 2008, 03:58
А может вообще не нужна та строчка?, загляни в нутрь Q_DECLARE_METATYPE


Название: Re: qRegisterMetaType (expected constructor, destructor, or type conversion before)
Отправлено: em от Май 30, 2008, 09:36
А может вообще не нужна та строчка?, загляни в нутрь Q_DECLARE_METATYPE
если ты про эту qRegisterMetaType<MyTypeMap>("MyTypeMap"); то нужна 100% даже в доках пишут, проверил у себя без нее signal - slot с моим типом не работает! =)