Название: QMetaEnum из staticMetaObject Отправлено: kambala от Май 16, 2011, 01:00 Здравствуйте. Захотел написать функцию, которая бы возвращала QMetaEnum по названию перечисления... и не смог. Точнее написать-то написал:
Код Получал через эту фукцию QMetaEnum, количество ключей возвращалось верное (смотрел через qDebug()), но при вызове например QMetaEnum::value(0) случался краш (хотя QMetaEnum::key(0) возвращал правильную строку). А если не крашилось, то случалось так, что количество ключей резко становилось равным 1. Убил несколько часов, пытаясь понять в чём дело. Решил запустить программу под мак ос (до этого запускал под виндой), и крашиться уже начало во время запроса количества ключей (первое действие с объектом QMetaEnum). Тут уже оказалось, что объект после возвращения из функции становится недействительным (хотя в документации ничего на этот счёт не сказано), а каждый раз писать одни и те же строчки получения QMetaEnum не хотелось, тем более что я хотел добавить функцию, возвращающую мне определённый QMetaEnum (чтоб постоянно в параметре его имя не передавать). Потому решил написать макрос, решающий поставленную задачу: Код
Вопрос: может я что-то упускаю и можно сделать проще? Название: Re: QMetaEnum из staticMetaObject Отправлено: LisandreL от Май 16, 2011, 07:40 Зря вы из кода выкинули «лишнее», но может так:
Код
Название: Re: QMetaEnum из staticMetaObject Отправлено: kambala от Май 16, 2011, 09:11 хы, работает... спасибо!
а оказалось я допустил ошибку в своем методе - пропустил &. При объявлении metaObject доверился хелпу, а там возвращаемое значение указано const QMetaObject :) Код
|