Проблема : Когда я выбираю строку с мышью на столе, рис # 1 становится рис # 2 - как вы можете видеть, все моинарисованные значки исчезают!
Вопрос : кто-нибудь может мне помочь с этой проблемой?Может быть, кто-то уже столкнулся с этой дилеммой и решил ее?Спасибо!
рис. 1
рис. 2
Дополнительно : я использую QTreeWidget
в качестве таблицы с некоторыми данными ( скрытый корень ).К QTreeWidget
объекту я добавляю делегатов столбцов (для 1, 2 и 3 столбцов, но не для столбца 4!).Во всех делегатах (которые основаны на QStyledItemDelegate
классе) я повторно реализовал метод paint()
, чтобы нарисовать мои определенные значки или текстовые данные.
Вот код одного из делегатов (1 столбец)- это какая-то цепочка, некоторые элементы сгруппированы (родитель + потомки):
void ChainTableDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const
{
QStyleOptionViewItem op = option;
op.state &= ~QStyle::State_HasFocus;
if( index.column() == TreeView::ePosChain )
{
QModelIndex parentIndex = index.parent();
if( !childCount( index ) && !parentIndex.isValid() )
{
QStyledItemDelegate::paint( painter, op, index );
return;
}
if( !parentIndex.isValid() )
{
// top
painter->drawPixmap( pos( op, topActivePix_ ), topActivePix_ );
}
else
{
int row = index.row();
if( row != childCount( parentIndex ) - 1 )
{
// middle
painter->drawPixmap( pos( op, middleActivePix_ ), middleActivePix_ );
}
else
{
// bottom
painter->drawPixmap( pos( op, bottomActivePix_ ), bottomActivePix_ );
}
}
}
QStyledItemDelegate::paint( painter, op, index );
}