![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
gmurik2 |
![]() ![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 23 Регистрация: 21.5.2009 Пользователь №: 764 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Вот есть некий код
и соответственно идет утечка памяти по каждому срабатыванию таймера, подскажите где вилы зарыты ![]() |
|
|
kwisp |
![]()
Сообщение
#2
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
gmurik2,
QList<QTableWidgetItem *> QTableWidget::findItems ( const QString & text, Qt::MatchFlags flags ) const не пробовал? |
|
|
gmurik2 |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 23 Регистрация: 21.5.2009 Пользователь №: 764 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#4
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
for(int i = ui.ActiveOrdersTable->rowCount(); i >= 0; i--) { for(int j = ui.ActiveOrdersTable->columnCount(); j >= 0; j--) { delete ui.ActiveOrdersTable->item(i,j); } ui.ActiveOrdersTable->removeRow(i); } вместо этого можно найти все элементы через QList<QTableWidgetItem *> QTableWidget::findItems ( const QString & text, Qt::MatchFlags flags ) const во флагах( Qt::MatchFlags) есть возможность использовать регулярные выраежния. |
|
|
gmurik2 |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 23 Регистрация: 21.5.2009 Пользователь №: 764 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Придется, наверно, немного рассказать, что делает мой код:
в функции setActiveOrdersTable_Apply() происходит заполнение таблицы ActiveOrdersTable из запроса query. далее эта таблица обновляется с некоторой периодичностью по сигналу таймера.
updateActOrdersTable() удаляет все записи, из таблицы, и вызывает setActiveOrdersTable_Apply(). и наверно сделав QList<QTableWidgetItem *> QTableWidget::findItems ( const QString & text, Qt::MatchFlags flags ) const я получу те же яйца, только вид сбоку |
|
|
kwisp |
![]()
Сообщение
#6
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
и наверно сделав QList<QTableWidgetItem *> QTableWidget::findItems ( const QString & text, Qt::MatchFlags flags ) const я получу те же яйца, только вид сбоку наверное получишь ![]() а clearSpans() зачем вызывается после него интересно вообще доступ к элементу по ->item(int r,int c) осуществим? если нет то вот это for(int i = ui.ActiveOrdersTable->rowCount(); i >= 0; i--) { for(int j = ui.ActiveOrdersTable->columnCount(); j >= 0; j--) { delete ui.ActiveOrdersTable->item(i,j); } ui.ActiveOrdersTable->removeRow(i); } не сработает ниразу. |
|
|
gmurik2 |
![]()
Сообщение
#7
|
Студент ![]() Группа: Участник Сообщений: 23 Регистрация: 21.5.2009 Пользователь №: 764 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Цитата а clearSpans() зачем вызывается после него интересно вообще доступ к элементу по ->item(int r,int c) осуществим? если нет то вот это доступ осуществим, а вызываю чтобы убрать объединения столбцов, потому как при следующем заполнении таблицы они остаются. Но даже если убрать clearSpans() - память утекает со скоростью 16 кб в 5сек, т.е. с той же скоростью что и с ним ![]() может подойдем к решению вопроса другим путем, как заполнить QTableWidget данными и периодически их обновлять, но без проблемы утечки памяти? |
|
|
kwisp |
![]()
Сообщение
#8
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
gmurik2 |
![]()
Сообщение
#9
|
Студент ![]() Группа: Участник Сообщений: 23 Регистрация: 21.5.2009 Пользователь №: 764 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
да действительно не верно
![]() ![]() исправил (int i = ui.ActiveOrdersTable->rowCount()-1; i >= 0; i--) ситуация не изменилась... ![]() пробовал чистить таблицу еще и так
тоже самое |
|
|
kwisp |
![]()
Сообщение
#10
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
gmurik2,
ну не знаю куда деваются 16Кб в 5 сек 1. воспользовавшись QTableWidget::findItems узнай размер списка всех элементов таблицы сравни с добавляемыми и удаляемыми если колличества равны то причина не в элементах. 2. проверь баг трекер троллей. 3. попробуй грохать всю таблицу и оцени результат может увидишь что-то полезное. 4. поищи по форуму схожие темы. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.2.2025, 8:58 |