View Full Version : QListWidget delegate paint problem.

5th July 2010, 14:31
Hi all,
A have just made cistom item delegate, and found some problem on implementing cross-platform paint and sizeHint class methods.

I have Big text in my cell, and I want to adjust Height regarding it, here is the code of delegate (http://pastebin.com/dNg1MeNV).

As you can see, the sizeHint Method:

QSize RaspListDeleagte::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
if (!index.isValid()) return QStyledItemDelegate::sizeHint(option,index);

QSize result;
//setup fonts
QFontMetrics fmTF(getTimeFont(option));
result.setHeight(fmTF.lineSpacing()+fmTF.leading() *2+4);
return result;

And I draw the text by following code:

painter->drawText(option.rect.x()+2,option.rect.y()+fmTF.he ight(),timeLeft);

I got option.rect.y() plus QFontMetrics height.
It worked good on Mac OS, but it looks ugly on Linux:

As you can see, the big font text with tome shifted (I got shifted option.rect.y()). It mean that every cell of QListWidget has some top marging, ot content margin. But I didn't find any in QStyleOptionViewItem.

How I can get this margin from Item Delegate ?