Opened 9 years ago

Closed 9 years ago

#116 closed enhancement (wontfix)

add native Qt canvas based on QGraphicsScene and QGraphicsView

Reported by: zhangjr Owned by: yanll
Priority: major Milestone: pre-alpha
Component: general Version: 0.2
Keywords: Cc:
Blocked By: Blocking:
Parent ID: Parent Tickets:
Estimated Number of Hours: 0.0 Add Hours to Ticket: 0
Billable?: yes Total Hours: 0

Description


Subtickets

Child Tickets

Change History (2)

comment:1 Changed 9 years ago by zhangjr

import sys
from PyQt4.QtCore? import Qt
from PyQt4.QtGui? import *
from PyQt4 import QtCore?, QtGui?
import cStringIO
import redis
import Image

class graphicsView (QtGui?.QGraphicsView):

def init (self, parent):

super (graphicsView, self).init (parent)
self.parent = parent

self.scene = QGraphicsScene(self)
self.scene.setItemIndexMethod(QtGui?.QGraphicsScene.NoIndex?)

self.setScene(self.scene)
self.setResizeAnchor(QGraphicsView.AnchorViewCenter?)

self.width = 800
self.height = 600
factor = 1
#self.scene.setSceneRect(0, 0, self.width * factor, self.height * factor)
self.setMinimumSize(self.width*0.1, self.height*0.1)

self.addImage()
self.setDragMode(QtGui?.QGraphicsView.NoDrag?)

self.rect=QGraphicsRectItem(0,0,0,0)
self.scene.addItem(self.rect)

def addImage(self):

ip="10.1.53.240"
port=9000

r= redis.Redis(host=ip, port=port, db=0)
_data=r.get("/GPPD/workspace/data/bank01/pid_image")
#bank_data = cStringIO.StringIO(_data)
#_img= Image.open(bank_data)
qimg = QImage.fromData(_data)
self.pixmap = QPixmap.fromImage(qimg).scaled(800,600)
#pixmap.fill(Qt.white)

self.img=self.scene.addPixmap(self.pixmap)

def wheelEvent (self, event):

super (graphicsView, self).wheelEvent(event)
factor = 1.2
if event.delta() < 0 :

factor = 1.0 / factor

self.scale(factor, factor)

def mousePressEvent(self, event):

super(graphicsView, self).mousePressEvent(event)
if self.img.isUnderMouse():

self.setDragMode(QtGui?.QGraphicsView.NoDrag?)
pos = self.mapToScene(event.pos())
self.startPosX=pos.x()
self.startPosY=pos.y()

def mouseReleaseEvent(self, event):

self.fitInView(self.startPosX, self.startPosY, self.dx, self.dy, Qt.KeepAspectRatio?)

def mouseMoveEvent(self,event):

super(graphicsView, self).mouseMoveEvent(event)
pos = self.mapToScene(event.pos())
#pos = event.pos()
self.dx=pos.x()-self.startPosX
self.dy=pos.y()-self.startPosY

#self.rect=QGraphicsRectItem(self.startPosX, self.startPosY, pos.x(), pos.y())
self.rect.setRect(self.startPosX, self.startPosY, self.dx,self.dy)
#self.scene.addItem(self.rect)
#self.setSceneRect(self.startPosX, self.startPosY, dx,dy)
#self.scene.removeItem(self.rect)
#print "2:", pos.x()

class Window(QWidget):

def init(self, parent = None):

QWidget.init(self, parent)

self.gv = graphicsView(self)

layout = QtGui?.QVBoxLayout(self)
layout.addWidget(self.gv)

if name == "main":

app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

comment:2 Changed 9 years ago by zhangjr

  • Resolution set to wontfix
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.