Russian Qt Forum
Мая 04, 2025, 17:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Передача QHash<QString, QString> через слот  (Прочитано 5605 раз)
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.035 секунд. Запросов: 20.