qt - QStyledItemDelegate + QTreeView::setIndenation 导致文本绘制出现故障
问题描述
已经两天了,我无法得到解决方案。
我有一个习惯QStyledItemDelegate
和一个QTreeView
. QTreeView's
缩进设置为 12。并QStyledItemDelegate's
QStyleOptionViewItem::rect
设置为 -12。QTreeView
当我更改项目文本的颜色时,此设置会导致故障。
代码
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 的视口有关。
解决方案
所以我忘记做的是覆盖:
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);
}
推荐阅读
- configuration - 修改 IoT Edge 部署上模块的环境变量或配置
- mongodb - MongoDB Atlass 无法通过 Mac 上的 Mongo Compass 连接 - 获取错误 queryTxt ESERVFAIL
- laravel - Viber 不显示来自 URL 的图像
- java - 是否可以使用新的 thymeleaf 模型刷新所有客户端?
- reactjs - TypeScript 不解析 react-native-web 代码
- regex - 第一行 Powershell 错误输出的正则表达式匹配
- assimp - 将 assimp 骨骼数据与其他顶点数据相结合
- c++ - 在应用程序中集成共享对象,ldd 和 readelf 显示不同的输出
- discord.js - 我正在尝试从人员列表中随机选择 5 个选项
- docker - 尝试在 Docker 容器中安装 Python 时出错