在QGraphicsview

时间:2016-01-27 18:00:03

标签: pyqt drawing

我正在寻找一种在QT应用程序主窗口内的窗口小部件上绘制线条的简单方法。 我用QtDesigner设计了一个带有QGraphicsview和按钮的主窗口。按下按钮时,应在图形视图中绘制一条线。难道没有一种简单的方法可以做到这一点。 QGraphicsview是绘图的正确选择吗?我现在读了文章的dozents,真的找不到解决方案。 以下是我的代码:

import sys
import mainwindowui
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class MainWindow(QMainWindow, mainwindowui.Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        self.connect(self.pushButton1, SIGNAL("clicked()"), self.pb1_pressed)

    def pb1_pressed(self):
        # here I want to draw  a line on the QGraphicswidget: 
        # something simple like: graphview.line(x1,y1,x2,y2)

我看到了许多非常复杂的解决方案,我尝试了很多,例如使用QPainter覆盖paintevent但是出现了错误,例如" QPainter :: begin:Paint device返回引擎== 0,输入:1"而且我不知道如果这是正确的方法。 有人可以给我一个非常简单的解决方案吗? 提前谢谢。

迪特尔

1 个答案:

答案 0 :(得分:2)

QGraphicsView是一个小部件,用于显示QGraphicsScene的内容,因此我假设您已经拥有QGraphicsScene。如果是这样,您可以这样在QGraphicsScene上画一条线:

scene.addLine(QLineF(x1, y1, x2, y2))

where scene是对QGraphicsScene实例的引用。

http://doc.qt.io/qt-4.8/qgraphicsscene.html#addLine