我开始看一些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_())
谢谢,
尼克
答案 0 :(得分:1)
我唯一看错的代码是你从QAbstractListModel继承而没有实现抽象方法。
从此处的文档:http://doc.qt.io/qt-5/qabstractlistmodel.html#details
在继承QAbstractListModel时,必须提供实现 rowCount()和data()函数。表现良好的模特也 提供headerData()实现。
是否遗漏了任何代码?你有没有创建一个QPainter对象?