Добрый день,
создаю свой делегат с переопределенной ф-цией рисования:
C++ (Qt)
void EmailDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
if (!index.isValid())
{
qDebug() << "index in void AccountDelegate::paint() not valid";
return;
}
switch (index.column())
{
case Column_Number :
{
qDebug() << "In Column_Number";
painter->save();
if (option.state & QStyle::State_Selected)
painter->fillRect(option.rect, option.palette.highlight());
painter->setPen(option.state & QStyle::State_Selected
? option.palette.highlightedText().color()
: option.palette.windowText().color());
painter->drawText(option.rect, QString::number(index.row() + 1), QTextOption(Qt::AlignCenter));
painter->restore();
break;
}
case Column_Default :
{
qDebug() << "In Column_Default";
QWidget *widget = dynamic_cast<QWidget *>(painter->device());
if (widget)
{
QStylePainter sPainter(widget);
QStyleOptionViewItem sOption;
sOption.initFrom(widget);
sOption.rect = option.rect;
sOption.state |= QStyle::State_On;
sPainter.drawControl(QStyle::CE_CheckBox, sOption);
return;
}
qDebug() << "Error in void EmailDelegate::paint() in case Column_Default";
break;
}
....
}
Значения перечисления обозначают номера колонок, для колонки Column_Default я пытаюсь рисовать чек-бокс, но
проблема в том что программа выбивает с ошибкой(проблема именно в колонке Column_Default), более того если
закомментировать и оставить QStylePainter sPainter(widget); то тоже выбъет ошибку, помогите разобраться в чем причина