Привет.
У меня есть QListView у него заданы свойства
C++ (Qt)
fileListView_->setViewMode(QListView::IconMode);
fileListView_->setSpacing(10);
fileListView_->setGridSize(QSize(64, 64));
fileListView_->setFlow(QListView::LeftToRight);
fileListView_->setWordWrap(true);
Выглядит он вот так:
картинка - 1.gif
Как можно видеть имена файлов кастрированы, и при выделении они не показываются.
Я хочу чтобы при выделении показывалось все имя, как это сделано в виндовс проводнике.
картинка - 2.gif
Как такое сделать?
Пытался использовать делегат таким образом:
C++ (Qt)
void KIconsDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
QStyleOptionViewItem textOption = myOption;
textOption.rect.setY(iconOption.rect.y() + iconOption.rect.height() - 20);
textOption.rect.setX(myOption.rect.x() + 8);
if (option.state & QStyle::State_Selected)
{
textOption.rect.setHeight(128);
painter->fillRect(textOption.rect, textOption.palette.color(cg, QPalette::Highlight));
}
QItemDelegate::paint(painter, option, index);
}
//--------------------------------------------------------------------------------
QSize KIconsDelegate::sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
if (option.state & QStyle::State_Selected)
{
return QSize(64, 256);
}
return QSize(64,64);
}
В результате использования делегата получил такую картину:
картинка - 3.gif
То есть выделение (прямоугольник) рисуется за итемами. А я хочу чтобо он их перекрывал, как в проводнике.
Если я добьюсь этого (чтобы он перекрывал низлежащие итемы), то уж текст нарисую.
Так вот как мне сделать перекрытие итемов?