![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
smartchecker |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 83 Регистрация: 7.9.2011 Пользователь №: 2853 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Как в QTableWidget дописать значение к ячейке когда там что-то уже есть?
|
|
|
silver47 |
![]()
Сообщение
#2
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Ну вариант "в лоб"
|
|
|
smartchecker |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 83 Регистрация: 7.9.2011 Пользователь №: 2853 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
BlueIceScream |
![]()
Сообщение
#4
|
![]() Студент ![]() Группа: Участник Сообщений: 56 Регистрация: 21.11.2011 Из: Республика Дагестан Пользователь №: 3016 Спасибо сказали: 18 раз(а) Репутация: ![]() ![]() ![]() |
Создавая оператором new новый объект и устанавливая его взамен старого вы теряете самое ценное - указатель на старый объект. Это приведет к утечке памяти(если конечно QTableWidget не использует специальные механизмы корректной замены. А он их не использует в любом случае, иначе сам виджет определял бы какие данные нужны, а какие нет).
Если вопрос состоит в простом дополнении значения ячейки, то почему бы не использовать следующий код :
Вы можете использовать предыдущий вариант. Однако вы должны сами корректно удалить старый объект, а затем устанавливать новый. Однако предложенный мной метод не требует использования тяжеловесного оператора new(и соответственно delete для удаления старого объекта) и более логичен. |
|
|
silver47 |
![]()
Сообщение
#5
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Это приведет к утечке памяти Уже обсуждалось. Это не приведет к утечке памяти и нет нужды уничтожать все QTableWidgetItem вручную. |
|
|
BlueIceScream |
![]()
Сообщение
#6
|
![]() Студент ![]() Группа: Участник Сообщений: 56 Регистрация: 21.11.2011 Из: Республика Дагестан Пользователь №: 3016 Спасибо сказали: 18 раз(а) Репутация: ![]() ![]() ![]() |
Да, действительно утечки памяти нет. Valgrind ничего подозрительного не заметил. Однако то, что сам QTableWidget при замене решает какие элементы модели нужны, а какие больше нет интересная особенность.
|
|
|
silver47 |
![]()
Сообщение
#7
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Сталкивался с этим с год назад. Тоже пытался удалять элементы созданные через new и поставленные в QTableWidget. Как оказалось QTableWidget умная штука и берет на себя управление памятью над всеми элементами, помещенными в него.
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 7:29 |