Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: astramax57 от Январь 08, 2009, 12:32



Название: Вопрос по QTreeview
Отправлено: astramax57 от Январь 08, 2009, 12:32
Приветствую всех!
Вопрос в следующем:
если использую Qtreewidget, то на экране получается следующее:
(http://s46.radikal.ru/i114/0901/93/eb181e89e51et.jpg) (http://radikal.ru/F/s46.radikal.ru/i114/0901/93/eb181e89e51e.tif.html)
Если использую QTreeView, то результат немного отличается:
(http://i045.radikal.ru/0901/e7/09333983aa27t.jpg) (http://radikal.ru/F/i045.radikal.ru/0901/e7/09333983aa27.tif.html)
Как видно появляются отступы перед текстом (выделены красным). Как от них избавиться?
В свойствах Qtreeview ничего не нарыл...

Блин, картинки не увеличиваются. Хотя  и так видно вроде


Название: Re: Вопрос по QTreeview
Отправлено: ритт от Январь 08, 2009, 13:07
а что за модель во втором случае? что возвращает data(...) для декоративных ролей?


Название: Re: Вопрос по QTreeview
Отправлено: astramax57 от Январь 11, 2009, 11:17
Добрый день, извините за паузу - праздники )))

Действительно, дело было в ролях. Было так:

Код:
QVariant message_model::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();

    if (role != Qt::DisplayRole && role != Qt::DecorationRole)
        return QVariant();
 
message_model_item *item = getItem(index);
    return item->data(index.column());
}

Т.е. для колонки, где должна быть только иконка независимо от роли я отдавал данные.
Теперь так:

Код:
QVariant message_model::data(const QModelIndex &index, int role) const
{
   if (!index.isValid())
        return QVariant();

    if (role != Qt::DisplayRole && role != Qt::DecorationRole)
        return QVariant();

int col = index.column();

if(role == Qt::DisplayRole && (col == 1 || col == 2))
return QVariant();
else if(role == Qt::DecorationRole && (col == 0 || col == 3))
return QVariant();
 
message_model_item *item = getItem(index);
    return item->data(col);
}

Для текстовых колонок отдаю данные только для роли DisplayRole, а для колонок с иконками -  только для DecorationRole

Спасибо Константин, направил в нужном направлении

Модераторам: тему можно закрывать или удалять - на ваше усмотрение )


Название: Re: Вопрос по QTreeview
Отправлено: Dendy от Январь 11, 2009, 11:25
Не надо удалять. А то завтра кто-то создаст такую же.


Название: Re: Вопрос по QTreeview
Отправлено: ритт от Январь 11, 2009, 12:15
согласен