crossplatform.ru

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


  Ответ в Собственная TreeModel, проблемы с выделением в представлении
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 13.5.2010, 13:03
  я уже откопал проблему. Резюме:
ни в коем случае не смотрите пример Simple Tree Model, он не правильный.
Лучше смотреть пример Editable Tree Model, хотя и он оставляет желать лучшего.
проблема была в функции columnCount, нужно всегда возвращать кол-во столбцов, как и в заголовке, иначе возникают разные чудеса
DEADHUNT Дата 13.5.2010, 7:21
  QAbstractItemView::SelectionBehavior посмотри.
Litkevich Yuriy Дата 13.5.2010, 1:35
  Делаю свою модель дерева. И не могу понять почему при щелчке мышью на корневых элементах, выделяется вся строка. А на дочерних не выделяется последний столбец.
Вот картинки
Щелчёк по первому столбцу:
Прикрепленное изображение
Прикрепленное изображение

Щелчёк по последнему столбцу:
Прикрепленное изображение
Прикрепленное изображение

Из снимков видно, что при щелчке по последнему столбцу появляется рамка вокруг ячейки, но синенького выделения в дочернем элементе нету.

Хотелось бы понять, что отвечает за возможность выделения. Я полагаю, что за это отвечают только флажки, но в этом месте модели у меня всё одинаково:
Qt::ItemFlags EntityModel::flags(const QModelIndex &index) const
{
    icnt++;
    qDebug() << indent() << "EntityModel::flags(index =" << index
                             << "[ Object =" << idx(index)
                             << "])";
    Qt::ItemFlags result;
    if (!index.isValid()){
        result = 0;
        qDebug() << indent() << "EntityModel::flags =" << result;
        icnt--;
        return result;
    }
    result = Qt::ItemIsEnabled | Qt::ItemIsSelectable;
    qDebug() << indent() << "EntityModel::flags =" << result;
    icnt--;
    return result;
}

П.С.
Проверено на:
Win 2k SP4, Win XP SP2
Qt: 4.4.3, 4.5.3, 4.6.x (недавнее из git'а)

похоже начал приближаться к решению.
Добавил фиктивные данные (на ещё один столбец), и не выделяется всегда только последний столбец.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 18:16