QPainter :: begin:绘制设备返回引擎== 0,键入:0

时间:2016-06-09 15:22:38

标签: python qt pyside 3dsmax

我开始看一些Python和QT的教程(https://www.youtube.com/watch?v=Eq7__6y0jwo&index=3&list=PL19DCiIwVefyQxlDTWlXQ4lnZDPW6_r-q)但是我收到这个错误“QPainter :: begin:Paint device return engine == 0,type:0”我无法想象为什么。我的想法是,我希望有一个可以在3dsMax,Modo中工作的窗口,也可以作为一个独立的窗口(3dsMax和Modo都带有PySide)。

有什么想法吗?

以下是代码:

from PySide import QtCore, QtGui
import sys

class PaletteListModel (QtCore.QAbstractListModel):
    def __init__(self, colors=[], parent=None):
        QtCore.QAbstractListModel.__init__(self, parent)
        self._colors = colors


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)

    listView = QtGui.QListView()
    listView.show()

    red = QtGui.QColor(255, 0, 0)
    green = QtGui.QColor(0, 255, 0)
    blue = QtGui.QColor(0, 0, 255)

    model = PaletteListModel([red, green, blue])

    listView.setModel(model)

    sys.exit(app.exec_())

谢谢,

尼克

1 个答案:

答案 0 :(得分:1)

我唯一看错的代码是你从QAbstractListModel继承而没有实现抽象方法。

从此处的文档:http://doc.qt.io/qt-5/qabstractlistmodel.html#details

  

在继承QAbstractListModel时,必须提供实现   rowCount()和data()函数。表现良好的模特也   提供headerData()实现。

是否遗漏了任何代码?你有没有创建一个QPainter对象?