全部,
以下代码:
self.painter = QtGui.QPainter(self)
self.painter.setRenderHint(QPainter.Antialiasing)
self.painter.translate(482,395)
self.painter.scale(300,300)
self.painter.save()
needle = Qt.QPolygon([QPoint(30, 0), QPoint(-30, 0), QPoint(0, 200)])
self.painter.setBrush(Qt.cyan)
self.painter.setPen(Qt.black)
self.painter.drawPolygon(needle)
self.painter.restore()
导致我的Pyqt应用程序崩溃。有谁知道为什么?它是我的ui_form.py文件的一部分,它由pyuic4自动吐出。删除/注释它可以解决问题。是的,我自己编写了这个而不是编译器。
非常感谢!
答案 0 :(得分:2)
将传递QPolygon
构造函数的列表保存在局部变量中。我猜这些元素会在调用返回时立即收集垃圾,因此当您绘制多边形时,它们不再存在。
points = [QPoint(30, 0), QPoint(-30, 0), QPoint(0, 200)]
needle = Qt.QPolygon(points)
答案 1 :(得分:0)
因为您没有正确创建QPolygon。
QPolygon ()
QPolygon ( int size )
QPolygon ( const QPolygon & polygon )
QPolygon ( const QVector & points )
QPolygon ( const QRect & rectangle, bool closed = false )
您可以使用整数,已创建的QPolygon,QVector或QRect创建多边形,也可以传递true或false以关闭多边形。