crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Iron Lappu
  опции профиля:
сообщение 8.5.2011, 21:18
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 30.3.2011
Пользователь №: 2558

Спасибо сказали: 0 раз(а)




Репутация:   0  


Приветствую Вас, уважаемые!

Привожу пример кода, который точно повторяет проблему:

QVariant QMyModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();

    QVariant data;
    switch (role)
    {
    case Qt::EditRole:
    case Qt::DisplayRole:
        {
            data = QVariant("text");
            break;
        }
    case Qt::DecorationRole:
        {
            QPixmap pixmap(16, 16);
            pixmap.fill(QColor(255, 0, 0));
            data = QVariant::fromValue(pixmap);
            break;
        }
    default:
        {
            data = QVariant();
            break;
        }
    }
    return data;
}


Если при таком раскладе попытаться отредактировать какой-либо элемент в представлении (активировать виджет редактирования и не закрывать его), то в диспетчере задач можно наблюдать стремительное увеличение расходуемой процессом памяти. Что конечно очень не хорошо. Ситуация не меняется если вместо QPixmap передавать QColor, QIcon...

Если же убрать ветку
case Qt::DecorationRole:
, то все работает нормально.

Может быть это БАГ, хотя такой расклад очень печален, ибо такой функционал часто бывает нужен. Если же нет помогите решить в чем дело.

Замечания:
1. Модель наследуется от QAbstractItemModel;
2. Представление использую QTreeView;
3. Делегат по умолчанию.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 2.6.2025, 7:25