Russian Qt Forum

Qt => Model-View (MV) => Тема начата: nvek от Июль 21, 2017, 08:26



Название: утечка памяти в модели qt:decorationRle QIcon [РЕШЕНО]
Отправлено: nvek от Июль 21, 2017, 08:26
Я правильно понимаю, что view отлавливает изменения курсора и этим дергает метод data() ?(поправте если я ошибась)
а может ли быть такое? что когда вью перерисовывается, заново выделяет память под новые иконки

Код:
QVariant data(const QModelIndex& index, int role) const
{
    if (!index.isValid())
        return QVariant();
 
    ...
    
 
    switch (role)
    {
    case Qt::DecorationRole:
    {
        ...
            return getIcon(...);
может ли тут быть утечка памяти?


Код:
const QIcon getIcon(...) const
{
    switch ()
    {
    ...
        return QIcon(...);
к чему я все это. У меня возникла некоторая проблема: при шtвелении курсора, выделении, в диспетчере задач, мое gui приложение хавает ну примерно по 200кб + каждый раз когда курсором пробегся по элементам дерева в treeView
и так далее.


Название: Re: утечка памяти в модели
Отправлено: nvek от Июль 21, 2017, 09:51
вот не поверите. но так все и есть, я закоментил этот свитч и наплыва памяти просто нету.
как такое может быть???
(╯°□°)╯︵ ┻━┻


Название: Re: утечка памяти в модели
Отправлено: Racheengel от Июль 21, 2017, 10:23
getIcon видать жреть всю память...


Название: Re: утечка памяти в модели qt:decorationRle QIcon [РЕШЕНО]
Отправлено: nvek от Июль 21, 2017, 10:52
Да, сделал вот как:
Код:
const QIcon StatTreeCtrl::getIcon( role ) const
{
        static const QMap<role, QIcon> t =
{
std::pair<StatisticType, QIcon>(role, ...),
...
};
return t.value(role, QIcon());


Название: Re: утечка памяти в модели qt:decorationRle QIcon [РЕШЕНО]
Отправлено: nvek от Июль 21, 2017, 10:54
перестало кушать!
 ???  ???  ???