Russian Qt Forum
Ноябрь 16, 2024, 12:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: qRegisterMetaType (expected constructor, destructor, or type conversion before)  (Прочитано 8335 раз)
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

Не пойму что надо ещё?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Май 29, 2008, 17:59 »

может целиком писать надо:
struct MyType
?
Записан

Юра.
em
Гость
« Ответ #2 : Май 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");  в конструктарах классов где использутся
Записан
vaprele07
Гость
« Ответ #3 : Май 30, 2008, 03:58 »

А может вообще не нужна та строчка?, загляни в нутрь Q_DECLARE_METATYPE
Записан
em
Гость
« Ответ #4 : Май 30, 2008, 09:36 »

А может вообще не нужна та строчка?, загляни в нутрь Q_DECLARE_METATYPE
если ты про эту qRegisterMetaType<MyTypeMap>("MyTypeMap"); то нужна 100% даже в доках пишут, проверил у себя без нее signal - slot с моим типом не работает! =)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.118 секунд. Запросов: 23.