Russian Qt Forum
Июня 23, 2025, 19:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: c++ runtime проблема и непонятное пересоздание ячеек при скрол таблицы [решено]  (Прочитано 1963 раз)
daimon
Гость
« : Июня 09, 2011, 01:41 »

Делаю в студии 2008 статическую компиляцию библиотек рантайма Qt (gode generation->Multi-thread (\MD)) приложение выкинуло проблему линкера - исключил для линкера специфическую либу - всё норм запустилось, но есть проблема, когда таблица QTableWidget с 20000 строками и 40 колонками начинаю выделять мышью где-то в центре вылет в памяти (вся таблицы сожрала где-то 900 метров изначально после добавления итемов).

при подключенном рантайме Multi-thread DLL - всё норм и глюков в памяти нет (и весит таблица в памяти 900 метров тоже).
В чём проблема? Помогите, спс
« Последнее редактирование: Июня 09, 2011, 19:15 от daimon » Записан
daimon
Гость
« Ответ #1 : Июня 09, 2011, 03:06 »

понял суть проблемы - при рантайме просто нет ошибки в памяти, когда пересчитываются все ячейки при скролинге таблицы, а без - есть. Самое непонятное, почему при скролинге создаются заново ячейки - мне обязательно для запрета пересчёта нужно хранить формулу в строке класса ячейки (если она отличается от предыдущей - пересчёт), а тут получается создаётся заново ячейка с параметрами по-умолчанию - строка формулы "", и уже отличается от текущей формулы, хотя по сути нет. Как запретить пересоздание ячеек в таблице при простом её скролинге или как хранить формулу в ячейке (роль редактирования) пока значение по этой роли не изменится функцией вставки ячейки в таблице (я задаю там при копировании и сортировки) или вручную - набором, но не скролингом.

Главная задача кака-то сделать так, чтобы строка с формулой как-то оставалась после скролинга (ведь объект то заново создаётся)
« Последнее редактирование: Июня 09, 2011, 13:35 от daimon » Записан
daimon
Гость
« Ответ #2 : Июня 09, 2011, 19:15 »

решил сам - проблема была в том, что при быстрой прокрутке объекты ячеек так быстро удаляются, что самопальный парсер (в функции возврата значения в ячейке по роли Display Role) успевает принимает битую формулу (нулевую строку) по роли Edit Role, так, что делаю проверку на валидность строки и всё теперь норм
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.03 секунд. Запросов: 18.