Название: QListWidget и картинки Отправлено: skydion от Март 03, 2010, 11:24 Ребята есть потребность сделать в QListWidget каждый рядок (элемент) картинкой.
Код: scaledPreview = imagePreview->scaled(s, Qt::KeepAspectRatio, Qt::FastTransformation); делаю так и через делегата пробую отображать Код: QByteArray ba = index.data(Qt::UserRole+1).toByteArray(); ничего не рисует... раньше делал Код: lw->setData(Qt::DecorateRole, QVariant(scaledPreview)); понятно что работало, но мне кажется, что это немного не правильно :-\ и вот это Qt::UserRole+1 такое возможно? или свои роли задавать невозможно? Название: Re: QListWidget и картинки Отправлено: alexman от Март 03, 2010, 12:07 и вот это Qt::UserRole+1 такое возможно? или свои роли задавать невозможно? Свои роли можно задавать! Название: Re: QListWidget и картинки Отправлено: skydion от Март 03, 2010, 12:22 Понятно, значит нужно копать дальше, что, где не так...
пс. Продебугил так почему-то из моей роли нет даных... Название: Re: QListWidget и картинки Отправлено: alexman от Март 03, 2010, 12:47 Попробуй для примера сначала с текстом поработать: установи для своей роли текст, затем получи... Я думаю так будет проще разобраться в связях!
Название: Re: QListWidget и картинки Отправлено: Kolobok от Март 03, 2010, 12:58 Рисовать надо в QStyleOptionViewItemV4::rect.
А чем Qt::DecorationRole не устраивает? Название: Re: QListWidget и картинки Отправлено: skydion от Март 03, 2010, 12:59 Инициализирую
Код: lw->setData(Qt::UserRole+1, QVariant("TEST")); В делегате сделал так... Код: QString text = index.data(Qt::UserRole+1).toString(); всеравно ничего не отображает, хотя даные в text возвращает... Название: Re: QListWidget и картинки Отправлено: skydion от Март 03, 2010, 13:01 Рисовать надо в . А чем Qt::DecorationRole не устраивает? Ем... ну Qt::DecorationRole как бы для иконок которые возле текста, а я бы хотел сделать бекграундом для каждого итема картинки которые я задаю... типа превюшки... А как этот QStyleOptionViewItemV4::rect получить? нужно приведение типа или как? Название: Re: QListWidget и картинки Отправлено: alexman от Март 03, 2010, 13:16 Что за модель юзаешь?
bool QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole )? Название: Re: QListWidget и картинки Отправлено: Kolobok от Март 03, 2010, 13:50 Ем... ну Qt::DecorationRole как бы для иконок которые возле текста, а я бы хотел сделать бекграундом для каждого итема Qt::BackgroundRole ?картинки которые я задаю... типа превюшки... А как этот QStyleOptionViewItemV4::rect получить? нужно приведение типа или как? Код: void QStyledItemDelegate::paint(QPainter *painter, Название: Re: QListWidget и картинки Отправлено: skydion от Март 03, 2010, 14:14 Ем... ну Qt::DecorationRole как бы для иконок которые возле текста, а я бы хотел сделать бекграундом для каждого итема Qt::BackgroundRole ?картинки которые я задаю... типа превюшки... Qt::BackgroundRole The background brush used for items rendered with the default delegate. (QBrush) Я уже читал об этом и понял что через эту роль передается QBrush... А как этот QStyleOptionViewItemV4::rect получить? нужно приведение типа или как? Код: void QStyledItemDelegate::paint(QPainter *painter, Понятно... сделал так Код: void PreviewTemplateDelegate::paint(QPainter *painter, не рисует.... Название: Re: QListWidget и картинки Отправлено: skydion от Март 03, 2010, 14:16 Что за модель юзаешь? bool QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole )? ем... QListWidget пока только отображает даные, обновляються не через модель... даные берутся из другой модели и просто туда записываются... вся суть в тому что через Qt::DecorationRole работает оно и понятно иконка становится размером картинки ))) 200х200 или другого размера.... Название: Re: QListWidget и картинки Отправлено: Kolobok от Март 03, 2010, 15:12 Qt::BackgroundRole The background brush used for items rendered with the default delegate. (QBrush) Я уже читал об этом и понял что через эту роль передается QBrush... Код: QBrush ( const QPixmap & pixmap ) кистью может быть картинка Название: Re: QListWidget и картинки Отправлено: skydion от Март 03, 2010, 17:02 Хм.... это уже интересно :)
Никогда бы не подумал - QBrush ( const QImage & image ) Спасибо, иду попробую, что из этого выйдет... Название: Re: QListWidget и картинки Отправлено: skydion от Март 03, 2010, 17:55 Рапортирую ;D
QBrush хорош, но... я упустил из виду, что он заливает всю область кистю "моя картинка", это не хорошо... вот делал так Код: void PreviewTemplateDelegate::paint(QPainter *painter, инициализирую Код: QBrush background(scaledPreview); получаю фигню... я вот еще пробую получить размер картинки и вернуть размер элемента списка Код: QSize PreviewTemplateDelegate::sizeHint(const QStyleOptionViewItem &option, пока что это не очень спасает... вот что получается картинка №1 к примеру такая сделана, но в списке отображается как картинка №2 тоже самое картинка №3 отображается как №4 вторая в списке... Еще помоему вторая попадает на место первой в списке... Название: Re: QListWidget и картинки Отправлено: Hammer от Апрель 16, 2010, 10:21 Может, тебе подойдет в качестве примера The Pixelator example из справки?
|