Russian Qt Forum

Qt => Общие вопросы => Тема начата: Kurles от Июль 11, 2014, 14:18



Название: вопрос по qRegisterMetaType
Отправлено: Kurles от Июль 11, 2014, 14:18
Доброго времени суток!

Возник вопрос касаемый функции qRegisterMetaType. Пишу библиотечку, которая использует QTcpSocket, у которого есть сигнал void QAbstractSocket::error ( QAbstractSocket::SocketError socketError ), для использования которого надо регистрировать энумерацию QAbstractSocket::SocketError с помощью  Q_DECLARE_METATYPE и qRegisterMetaType.
Собственно вопрос, на сколько безопасно вызывать функцию qRegisterMetaType несколько раз с одними и теми же параметрами? Ладно, я в своей библиотеке смогу сделать вызов это функции только один раз, но никто же не гарантирует, что в других библиотеках эта же функция не будет вызвана с этими же параметрами.


Название: Re: вопрос по qRegisterMetaType
Отправлено: Swa от Июль 11, 2014, 14:36
В документации не написано, что нельзя вызывать этот метод два раза с одним аргументом.
Но вы можете попробовать это сделать в тестовой программе, просто чтобы проверить.


Название: Re: вопрос по qRegisterMetaType
Отправлено: Bepec от Июль 11, 2014, 15:00
Ну насколько я помню там создаётся соответствие типа его строковому представлению. Думаю там эта ситуация уже решается.


Название: Re: вопрос по qRegisterMetaType
Отправлено: Kurles от Июль 11, 2014, 15:02
В документации не написано, что нельзя вызывать этот метод два раза с одним аргументом.
Но вы можете попробовать это сделать в тестовой программе, просто чтобы проверить.
В тестовой программе всё хорошо, но вдруг какие то подводные камни есть? Та же самая тестовая программа при вызове qRegisterMetaType несколько раз с одинаковыми параметрами на выходе один и тот же id возвращает, так что думаю что всё ок должно быть, но мало ли :)


Название: Re: вопрос по qRegisterMetaType
Отправлено: Igors от Июль 11, 2014, 15:40
Почему бы не заюзать QMetaType::isRegistered?


Название: Re: вопрос по qRegisterMetaType
Отправлено: Kurles от Июль 14, 2014, 10:31
Почему бы не заюзать QMetaType::isRegistered?
Спасибо!