QListItem为每个项

时间:2016-04-01 01:29:12

标签: qt qlistview

我正在尝试使用委托在QWwidget中绘制QListView。我可以让窗口小部件呈现,但似乎有一个剪辑窗口在我绘制它们时向左移动小部件,我无法理解为什么。这几乎就像QListView正在添加一个随着每个添加项目而增长的边距,即使我仍然在正确的位置绘制小部件。

渲染是这样的:

  1. | ----- |
  2. - > | ----- |
  3. - > | ----- |
  4. 这是我正在使用的代码:

    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);
        }
    }
    

    任何人都可以解释这种行为吗?

    enter image description here

    更新:我在QWidgets的渲染函数中添加了一些调试代码。我观察的是,在QListView的绘制函数中,系统剪辑的x坐标在循环的每次迭代中移动+3。我不知道这是从哪里来的。

0 个答案:

没有答案