QStyledItemDelegate + QTreeView :: setIndenation会在文本绘图上引起毛刺

问题描述 投票:-1回答:1

已经有两天我无法得到解决方案。

我有一个自定义QStyledItemDelegateQTreeViewQTreeView'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的视口有关。

qt qt5
1个回答
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);
    }
© www.soinside.com 2019 - 2024. All rights reserved.