我正在尝试使用委托在QWwidget
中绘制QListView
。我可以让窗口小部件呈现,但似乎有一个剪辑窗口在我绘制它们时向左移动小部件,我无法理解为什么。这几乎就像QListView
正在添加一个随着每个添加项目而增长的边距,即使我仍然在正确的位置绘制小部件。
渲染是这样的:
这是我正在使用的代码:
void CustomItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
MyWidget w("test", "test");
//At some point I want to load the widget with data from here
if(index.data().canConvert<CustomModelItem>())
{
w.resize(option.rect.size());
painter.save();
//some kind of bug with passing topLeft in. I found this solution somewhere
w.render(painter, painter->deviceTransform().map(option.rect.topLeft()));
painter.restore();
}
else
{
QStyledItemDelegate::paint(painter, option, index);
}
}
任何人都可以解释这种行为吗?
更新:我在QWidgets的渲染函数中添加了一些调试代码。我观察的是,在QListView的绘制函数中,系统剪辑的x坐标在循环的每次迭代中移动+3。我不知道这是从哪里来的。