Привет всем!
Ребята у меня вопрос, начал разбираться с QListWidget, делегатами и всем сопутствующим
Значит есть у меня QListWidget на форме он лежит горизонтально, направление элементов слева на право,
ресайзится соотвественно вверх, ну или если меняется размер окна то и вверх и в сторону.
Значит мне нужно сделать чтобы елементы (картинки/превюшки) имели ширину равную высоте списка, ну типа ресайзнули список вверх все итемы тоже ресайзнулись и притом ширина равна высоте, значит замутил я делегат
class PreviewTemplateDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
explicit PreviewTemplateDelegate(QObject *parent = 0);
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
};
void PreviewTemplateDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionViewItem myOption = option;
myOption.displayAlignment = Qt::AlignLeft | Qt::AlignBottom;
painter->fillRect(myOption.rect, Qt::yellow);
painter->drawRect(myOption.rect);
QStyledItemDelegate::paint(painter, myOption, index);
}
QSize PreviewTemplateDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
int height = option.rect.height();
return QSize(height, height);
}
значит наследую клас class TemplateListWidget : public QListWidget
void TemplateListWidget::resizeEvent(QResizeEvent *e)
{
// QSize s = e->size();
//
// s.setWidth(s.height());
//
// for(int i = 0; i < this->count()-1; i++)
// item(i)->setSizeHint(s);
// QListWidget::resizeEvent(e);
}
и теперь вопрос, почему при ресайзе списка итемы не меняються по ширине, если ресайзнуть всю форму тогда меняються, и еще меняються тогда когда ресайзится список в сторону уменшения, тогда итемы меняют свои размеры нормально в сторону уменшения.
если раскоментировать resizeEvent и насильно менять размеры итемов тогда все работает и при ресайзе списка и при ресайзе формы...
ну впринципе работает и хорошо, просто еще интересно все ли я правильно сделал и так ли понял делегаты и принципы отображения модели