Название: Qt 4.1.3 linux проблемы с делегатами Отправлено: vregess от Июнь 17, 2007, 10:22 Под виндой все работает (там qt 4.2), а под лин ( qt 4.1.3) - нет.
Программа сыпется в Код:
Т.е. индекс не валидный. Проверял индексы в модели в методе index(). Там вроде все нормально. И почему в виндах работает, а тут - нет. В чем может быть проблема? Windoxs XP qt-4.2.2-opensource, mingw Linux Debian Sarge 3.1 qt-4.1.3 Название: Qt 4.1.3 linux проблемы с делегатами Отправлено: vaprele07 от Июнь 17, 2007, 15:07 Значит не валидный, мало ты там чего написал
пробуй мягче проверять if (!index.isValid()) return; по сути на все что творится после void setModelData() const тебе... а потом смотри выше где что не так... или кидай сюда подробности реализации Название: Qt 4.1.3 linux проблемы с делегатами Отправлено: vregess от Июнь 17, 2007, 18:48 Цитата: "vaprele07" Значит не валидный, мало ты там чего написал пробуй мягче проверять if (!index.isValid()) return; по сути на все что творится после void setModelData() const тебе... а потом смотри выше где что не так... или кидай сюда подробности реализации Да вот ничего не понял... выше - это только в модели, так получается, где смотреть? ифом проверял - не валидный (Q_ASSERT обдно и то же, кстати...). интересно, почему в виндах этот код работает... Название: Qt 4.1.3 linux проблемы с делегатами Отправлено: vaprele07 от Июнь 18, 2007, 02:05 Q_ASSERT вызывает qFatal которая в свою очередь делает аборт приложению.
компиляция с флагом: QT_NO_DEBUG приводит к игнорированию Q_ASSERT(index.isValid()); например если ты в винде собирал как релиз а не дебак, скорее всего так и было. А в линухе собрал как дебаг вот она у тебя и вылетает. Q_ASSERT() используют в тех случаях, где тебе стопудово нужно отловить ошибку которая в дальнейшем может привести к краху твоего приложения. Вот ты ее и поймал ;) Выше это по коду ;) везде где идет работа с индексами их количеством например: rowCount, columnCount ... Название: Qt 4.1.3 linux проблемы с делегатами Отправлено: vregess от Июнь 18, 2007, 06:54 Цитата: "vaprele07" Q_ASSERT вызывает qFatal которая в свою очередь делает аборт приложению. компиляция с флагом: QT_NO_DEBUG приводит к игнорированию Q_ASSERT(index.isValid()); например если ты в винде собирал как релиз а не дебак, скорее всего так и было. А в линухе собрал как дебаг вот она у тебя и вылетает. Q_ASSERT() используют в тех случаях, где тебе стопудово нужно отловить ошибку которая в дальнейшем может привести к краху твоего приложения. Вот ты ее и поймал ;) Выше это по коду ;) везде где идет работа с индексами их количеством например: rowCount, columnCount ... Спасибо за вводную статью про Q_ASSERT, я как-то особо не задумывался, что там внутри. Проги обе собирал, как ты говоришь, дебак, тк, вроде, трезвый был. Но если даже и релиз. Программа бы упала из-за невалидного индекса. Но под виндой все корректно работает, те там индекс передается верный. Я прям не знаю, куда сунуться... Название: Qt 4.1.3 linux проблемы с делегатами Отправлено: vregess от Июнь 19, 2007, 06:20 скачал qt-4.2.3 под линукс - проблема исчезла.
|