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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Передача QHash<QString, QString> через слот  (Прочитано 5425 раз)
akaMDA
Гость
« : Июль 18, 2012, 15:00 »

Хочу передать QHash<QString, QString> через слот. Просто так не берет - надо регистировать. Однако не удается скормить Q_DECLARE_METATYPE(QHash<QString, QString>) - возникают ошибки. Как это сделать?
Записан
mutineer
Гость
« Ответ #1 : Июль 18, 2012, 15:04 »

Цитировать
Adding a Q_DECLARE_METATYPE() makes the type known to all template based functions, including QVariant. Note that if you intend to use the type in queued signal and slot connections or in QObject's property system, you also have to call qRegisterMetaType() since the names are resolved at runtime.
Ну и ошибки прочитать неплохо бы
Записан
akaMDA
Гость
« Ответ #2 : Июль 18, 2012, 15:08 »

я вызывыю qRegisterMetaType(). Ошибки происходят до компиляции - Qt creator требует ; после Q_DECLARE_METATYPE(QHash<QString, QString>) Ставлю - тебует после Q_DECLARE_METATYPE
Записан
mutineer
Гость
« Ответ #3 : Июль 18, 2012, 15:09 »

покажи кусок кода и сами ошибки
Записан
akaMDA
Гость
« Ответ #4 : Июль 18, 2012, 15:13 »

Код:
файл .h

#include .....
Q_DECLARE_METATYPE(QHash<QString, QString>)

класс
.............
Код:
файл cpp
в конструкторе
qRegisterMetaType<QHash<QString, QString> >("QHash<QString, QString>")

класс
.............

Ошибки происходят до компиляции - Qt creator требует ; после Q_DECLARE_METATYPE(QHash<QString, QString>) Ставлю - тебует после Q_DECLARE_METATYPE
Записан
mutineer
Гость
« Ответ #5 : Июль 18, 2012, 15:16 »

ошибки до компиляции? это как?
и попробуй не передавать в qRegisterMetaType строку
« Последнее редактирование: Июль 18, 2012, 15:18 от mutineer » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Июль 18, 2012, 15:20 »

Код
C++ (Qt)
typedef QHash <QString, QString> TSHash;
Q_DECLARE_METATYPE(TSHash);
 
Записан
akaMDA
Гость
« Ответ #7 : Июль 18, 2012, 15:22 »

тьфу, туплю.
Ошибки -

error: C2976: too few template arguments
error: C2143: syntax error : missing ';'
error: C3203: class template invalid as template argument for template parameter , expected a real type
error: C2955: use of class template requires template argument
Записан
akaMDA
Гость
« Ответ #8 : Июль 18, 2012, 15:26 »

Код:
typedef QHash <QString, QString> TSHash;
Q_DECLARE_METATYPE(TSHash);

Помогло, спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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