2016-01-27 3 views
1

Я ищу простой способ нарисовать линию на виджет в главном окне приложения QT. Я разработал с QtDesigner главное окно с QGraphicsview и кнопкой. При нажатии кнопки в графическом представлении необходимо нарисовать линию. Разве нет простого способа сделать это. Является ли QGraphicsview правильным выбором для рисования? Теперь я читал десятки статей и не нашел решения. Вот мой код короче:простой рисунок с pyqt на QGraphicsview

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) 

Я видел много очень сложных перспективных решений, и я пробовал много, например, с перепиской paintevent с использованием QPainter, но получил ошибки, такие как «QPainter :: begin: Paint device возвратил engine == 0, type: 1», и я не знаю, как это правильно. Может кто-нибудь, пожалуйста, дайте мне очень простое решение? Спасибо заранее.

Dieter

ответ

2

QGraphicsView это виджет, который используется для отображения содержимого QGraphicsScene, так что я предполагаю, что вы уже имеете QGraphicsScene. Если да, то вы можете нарисовать линию на QGraphicsScene таким образом:

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

Где сцена является ссылкой на ваш QGraphicsScene экземпляр.

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

Смежные вопросы