Как нарисовать кнопку в QStyledItemDelegate
От: sz36 Россия  
Дата: 17.04.20 09:39
Оценка:
Hi, All!

Стоит следующая задача — иметь в таблице модель-представление кнопку в некоторых ячейках. Для рисования использован следующий ход:

void MyDelegat::paint(QPainter* painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
  //Закрашиваем фон, пишем текст
  // . . . 

  //Рисуем кнопку
  QPushButton btn;
  btn.setText(...);
  btn.setGeometry(...);
  btn.setAutoFillBackground(true);
  QPixmap map = btn.grab(); 
  painter->drawPixmap(btn.x(), btn.y(), map);
}


Код сильно упрощен: на самом деле теневая кнопка создается единожды в конструкторе MyDelegat, а по сигналу entered(QModelIndex) в ячейке создается уже нормальная кнопка по тем же координатам и подсовывается в качестве editor. Сути это не меняет. Все работает ништяк, за исключением одного момента — если у кнопки скруглены углы, то участки фона вокруг углов кнопки не прорисовываются, остаются белыми.

Есть ли способ решить эту проблему? Закрасить углы цветом фона, или м.б, есть другой способ нарисовать кнопку в делегате?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.