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.
As you can see, the sizeHint Method:
{
if (!index.isValid()) return QStyledItemDelegate::sizeHint(option,index);
//setup fonts
result.setHeight(fmTF.lineSpacing()+fmTF.leading()*2+4);
result.setWidth(option.rect.width());
return result;
}
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;
}
To copy to clipboard, switch view to plain text mode
And I draw the text by following code:
painter->setFont(timeFont);
painter->drawText(option.rect.x()+2,option.rect.y()+fmTF.height(),timeLeft);
painter->setFont(timeFont);
painter->drawText(option.rect.x()+2,option.rect.y()+fmTF.height(),timeLeft);
To copy to clipboard, switch view to plain text mode
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 ?
Bookmarks