微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在QStyledItemDelegate中偏移的qwidget.render绘图

如何解决在QStyledItemDelegate中偏移的qwidget.render绘图

|| 我正在尝试创建一个委托,以将自定义窗口小部件绘制为图标模式下列表视图中的元素。我或多或少都在工作,但是我无法在正确的位置绘制小部件,似乎是在考虑(0,0)主窗口的原点而不是列表视图的原点的情况下才绘制它们。我需要通过什么才能在正确的位置呈现窗口小部件?我知道我可以传递偏移量...如何计算主窗口和列表视图之间的偏移量? 这是我对委托的绘制方法(源自qstyledItemDelegate)
def paint(self,painter,option,index):

        painter.save()

        if option.state & qstyle.State_Selected:
            painter.fillRect(option.rect,option.palette.highlight());

        model = index.model()
        myWidget = model.listdata[index.row()]


        myWidget.setGeometry(option.rect)

        myWidget.render(painter,option.rect.topLeft() )

        painter.restore()
谢谢 / J     

解决方法

        如果这对其他人有用,我将发布解决方案... 我不知道这是否是最好的方法,但是我正在通过将父代的原图映射到主窗口来计算偏移量:
offset = self._parent.mapTo(self._mainWindow,QPoint(0,0))
myWidget.render(painter,option.rect.topLeft() + offset)
它可以正常工作,因此在找到更好的方法之前,我将继续使用它。     ,        您可以将Widget渲染为临时像素图,然后绘制像素图。这就解决了轮班问题:
def paint(self,painter,option,index):
        pic = QPixmap( option.rect.width(),option.rect.height() )
        w = ItemWidget()
        w.setGeometry( option.rect )
        w.render(pic)            
        painter.drawPixmap( option.rect,pic )
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。