Я дал ссылку на картинку где нарисован тайл с кнопкой.Дело в том,что я рисую виджет на пиксмапе,а потом рисую пиксмап в QItemDelegate::paint
void CRosterDelegate::paint(QPainter *painter,const QStyleOptionViewItem &option,const QModelIndex &index) const
{
if (index.data(oDesk::ItemTypeRole).toInt() == oDesk::Tile) {
painter->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing);
mpTile->setModelIndex(index);
mpTile->setGeometry(option.rect);
QPixmap pixmap(option.rect.size());
mpTile->render(&pixmap);
painter->drawPixmap(option.rect,pixmap);
} else
QItemDelegate::paint(painter,option,index);
}
Таким образом когда происходит клик,я ловлю событие само собой,но уже не могу поймать позицию кнопки,для того,что бы она была правильной виджет нужно показать,явно вызвать QWidget::show(),что невозможно,он мелькает.Я пробовал его двигать и делать рпозрачным,все равно заметно.
Понятно,что проблема решиться,если я все нарисую ручками,но не хотелось бы.
Вот ссылка погляди
https://url.odesk.com/cdqop