我QStyledItemDelegate
用来为我的QTreeView
.
我的树视图的根没有装饰。它只是一棵简单的树,关系类似于下面的树:
ColorBook1
Color1
Color2
ColorBook2
Color3
父母和孩子的风格不同,父母的选择被禁用。
我想自定义子节点中的选择行为,以便子节点周围的选择矩形覆盖整行而不是单独的文本子节点。
当前行为:
期望的行为:
有没有办法像这样使用扩展选择矩形QStyledItemDelegate
?我尝试adjusting
了rect
inQStyleOptionViewItem
参数QStyledItemDelegate::paint
。但这将子节点文本移到了左侧。我想将文本节点保持在同一位置,但只需将选择矩形调整到左侧。所以就像在paint方法中绘制文本和像素图一样,有没有办法绘制选择矩形(使用默认的选择矩形颜色)?
我的 StyledItemDelegate 的绘制方法如下:
我在 QStyledItemDelegate::paint 方法中使用以下代码:
void paint( QPainter * inPainter, const QStyleOptionViewItem & inOption, const QModelIndex & inIndex ) const
{
if( inIndex.data( Qt::UserRole ) == ColorInfoType::kColorBook )
{
QFont font = inPainter->font();
font.setWeight( QFont::Bold );
font.setPointSize( 8 );
inPainter->setFont( font );
inPainter->drawText
(
inOption.rect.adjusted( 5,0,0,0 ),
inIndex.data( Qt::DisplayRole ).toString(),
QTextOption( Qt::AlignVCenter | Qt::AlignLeft )
);
}
else
{
//To Do: draw the selection rect after adjusting the size.
// Draw the Color Name text
QStyledItemDelegate::paint( inPainter, inOption, inIndex );
}
}