Иногда я сталкиваюсь с такой проблемой при использовании connect( ): существование сигналов и слотов с соответствующими параметрами не проверятся на этапе компиляции. Поэтому, при изменении сигнатуры этих функций могут появиться скрытые ошибки. Я придумал такой выход:Код:Q_ASSERT(connect(obj1,SIGNAL(s ignal(int)),obj2,SLOT(slot(int))))Это полностью не исключает ситуации описанной выше, но шансов "напороться" на эту ошибку становится больше.Аналогично поступаю и с QMetaObject::invokeMethod().Код:Q_ASSERT (QMetaObject::invokeMethod(obj,"method", Q_ARG(QString,str))).При работе с проперти по имени (пример: obj.property("prop")) тоже может возникнуть ошибка при смене имени проперти или его типа. Поэтому для взятия значения я написал функцию, которая при отсутсвии свойства или неправельном типе вывалит ассерт. Вызов функции setProperty() тоже обкладываю ассертом.Собственно вопрос (или тема для дискуссии) А нормальное ли это решение? Может кто-то борется с этим по-другому. P.S. Приветствую любые высказывания по теме.
|