QStyledItemDelegate + QTreeView :: setIndenation导致文本绘制时出现故障

时间:2019-03-14 15:54:31

标签: qt qt5

已经两天了,我无法解决问题。

我有一个自定义QStyledItemDelegate和一个QTreeViewQTreeView's缩进设置为12。QStyledItemDelegate's QStyleOptionViewItem::rect设置为-12。 当我更改QTreeView项目文本的颜色时,此设置会引起故障。

enter image description here

代码

void MyItemViewDelegate::initStyleOption(QStyleOptionViewItem* option, const QModelIndex& index) const
{
    if (m_functor->operator ()(index))
    {
        option->rect.adjust(-12, 0, 0, 0);
    }    
}

MyTreeView::MyTreeView(QWidget* parent)
    : QTreeView(parent)
{
    setIndentation(12);
}

我想念什么?

它与QTreeView的视口有某种联系。

1 个答案:

答案 0 :(得分:0)

所以我忘了要做的是覆盖:

    QRect QTreeView::visualRect(const QModelIndex& index) const
    {
        if (m_functor->operator ()(index))
        {
            return QTreeView::visualRect(index).adjusted(-m_indentation, 0, 0, 0);
        }

       return QTreeView::visualRect(index);
    }