PDA

View Full Version : QListWidget delegate paint problem.



rule
5th July 2010, 13: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);
result.setWidth(option.rect.width());
return result;
}


And I draw the text by following code:


painter->setFont(timeFont);
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:
http://erudenko.com/photo/temp/lrasp.png

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 ?