Название: c++ runtime проблема и непонятное пересоздание ячеек при скрол таблицы [решено] Отправлено: daimon от Июня 09, 2011, 01:41 Делаю в студии 2008 статическую компиляцию библиотек рантайма Qt (gode generation->Multi-thread (\MD)) приложение выкинуло проблему линкера - исключил для линкера специфическую либу - всё норм запустилось, но есть проблема, когда таблица QTableWidget с 20000 строками и 40 колонками начинаю выделять мышью где-то в центре вылет в памяти (вся таблицы сожрала где-то 900 метров изначально после добавления итемов).
при подключенном рантайме Multi-thread DLL - всё норм и глюков в памяти нет (и весит таблица в памяти 900 метров тоже). В чём проблема? Помогите, спс Название: Re: c++ runtime проблема Отправлено: daimon от Июня 09, 2011, 03:06 понял суть проблемы - при рантайме просто нет ошибки в памяти, когда пересчитываются все ячейки при скролинге таблицы, а без - есть. Самое непонятное, почему при скролинге создаются заново ячейки - мне обязательно для запрета пересчёта нужно хранить формулу в строке класса ячейки (если она отличается от предыдущей - пересчёт), а тут получается создаётся заново ячейка с параметрами по-умолчанию - строка формулы "", и уже отличается от текущей формулы, хотя по сути нет. Как запретить пересоздание ячеек в таблице при простом её скролинге или как хранить формулу в ячейке (роль редактирования) пока значение по этой роли не изменится функцией вставки ячейки в таблице (я задаю там при копировании и сортировки) или вручную - набором, но не скролингом.
Главная задача кака-то сделать так, чтобы строка с формулой как-то оставалась после скролинга (ведь объект то заново создаётся) Название: Re: c++ runtime проблема и непонятное пересоздание ячеек при скролинге таблицы Отправлено: daimon от Июня 09, 2011, 19:15 решил сам - проблема была в том, что при быстрой прокрутке объекты ячеек так быстро удаляются, что самопальный парсер (в функции возврата значения в ячейке по роли Display Role) успевает принимает битую формулу (нулевую строку) по роли Edit Role, так, что делаю проверку на валидность строки и всё теперь норм
|