개정판 f44c85ee
QEngineeringUnknownItem이 pyqtSignal을 이용하지 못하는 문제로 인해 Transfer 클래스를 생성하여 간접적으로 전달하게끔 수정
DTI_PID/DTI_PID/MainWindow.py | ||
---|---|---|
662 | 662 |
@date 2018.06.12 |
663 | 663 |
@history 2018.06.14 Jeongwoo Change method to add unknown item |
664 | 664 |
2018.06.18 Jeongwoo Add connect on unknown item |
665 |
Add [transfer] for using pyqtSignal |
|
665 | 666 |
''' |
666 | 667 |
def drawUnknownItems(self): |
667 | 668 |
from QEngineeringFlowArrowItem import QEngineeringFlowArrowItem |
... | ... | |
704 | 705 |
if (w < 10 or h < 10): continue |
705 | 706 |
|
706 | 707 |
item = QEngineeringUnknownItem(x, y, w, h) |
707 |
item.removed.connect(self.itemRemoved) |
|
708 |
item.transfer.removed.connect(self.itemRemoved)
|
|
708 | 709 |
self.addUnknownItemToScene(item) |
709 | 710 |
# up to here |
710 | 711 |
|
... | ... | |
729 | 730 |
Jeongwoo 2018.06.12 Add LineNoTextItem from LINE_NO |
730 | 731 |
Jeongwoo 2018.06.14 Add UnknownItem from UNKNOWN |
731 | 732 |
Jeongwoo 2018.06.18 Update Scene after all item added |
733 |
Add connect on unknown item |
|
734 |
Add [transfer] for using pyqtSignal |
|
732 | 735 |
''' |
733 | 736 |
def loadRecognitionResultFromXml(self, xmlPath): |
734 | 737 |
from xml.etree.ElementTree import Element, SubElement, dump, ElementTree, parse |
... | ... | |
837 | 840 |
pt = [float(x) for x in unknown.find('LOCATION').text.split(',')] |
838 | 841 |
size = [float(x) for x in unknown.find('SIZE').text.split(',')] |
839 | 842 |
item = QEngineeringUnknownItem(pt[0], pt[1], size[0], size[1]) |
843 |
item.transfer.removed.connect(self.itemRemoved) |
|
840 | 844 |
self.addUnknownItemToScene(item) |
841 | 845 |
# up to here |
842 | 846 |
|
DTI_PID/DTI_PID/Shapes/QEngineeringUnknownItem.py | ||
---|---|---|
3 | 3 |
import copy |
4 | 4 |
import sys |
5 | 5 |
try: |
6 |
from PyQt5.QtCore import Qt, QPointF, QRectF, pyqtSignal, QT_VERSION_STR, QRect |
|
6 |
from PyQt5.QtCore import Qt, QPointF, QRectF, pyqtSignal, QT_VERSION_STR, QRect, QObject
|
|
7 | 7 |
from PyQt5.QtGui import QImage, QPixmap, QPainterPath, QBrush, QPen, QTransform, QFont, QColor |
8 | 8 |
from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene, QFileDialog, QGraphicsItem, QAbstractGraphicsShapeItem, QGraphicsTextItem |
9 | 9 |
except ImportError: |
10 | 10 |
try: |
11 |
from PyQt4.QtCore import Qt, QRectF, pyqtSignal, QT_VERSION_STR, QRect |
|
11 |
from PyQt4.QtCore import Qt, QRectF, pyqtSignal, QT_VERSION_STR, QRect, QObject
|
|
12 | 12 |
from PyQt4.QtGui import QGraphicsView, QGraphicsScene, QImage, QPixmap, QPainterPath, QFileDialog, QFont, QColor |
13 | 13 |
except ImportError: |
14 | 14 |
raise ImportError("ImageViewerQt: Requires PyQt5 or PyQt4.") |
... | ... | |
22 | 22 |
removed = pyqtSignal(QGraphicsItem) |
23 | 23 |
|
24 | 24 |
''' |
25 |
@history 2018.06.18 Jeongwoo Add variable [transfer] for pyqtSignal |
|
25 | 26 |
''' |
26 | 27 |
def __init__(self, x, y, width, height, parent=None): |
27 | 28 |
import uuid |
... | ... | |
33 | 34 |
self.setFlags(QGraphicsItem.ItemIsSelectable|QGraphicsItem.ItemIsFocusable) |
34 | 35 |
self.setAcceptHoverEvents(True) |
35 | 36 |
self.setAcceptTouchEvents(True) |
37 |
|
|
38 |
self.transfer = Transfer() |
|
36 | 39 |
|
37 | 40 |
def hoverEnterEvent(self, event): |
38 | 41 |
pass |
... | ... | |
97 | 100 |
@history 2018.06.18 Jeongwoo Add calling removed signal |
98 | 101 |
''' |
99 | 102 |
def deleteUnknownItemFromScene(self): |
100 |
self.removed.emit(self) |
|
103 |
self.transfer.removed.emit(self)
|
|
101 | 104 |
self.scene().removeItem(self) |
102 | 105 |
|
103 | 106 |
def boundingRectOnScene(self): |
104 | 107 |
rect = self.sceneBoundingRect() |
105 | 108 |
return rect |
109 |
|
|
110 |
''' |
|
111 |
@brief The class transfer pyqtSignal Event. Cause Subclass of QGraphicsRectItem can't use pyqtSignal |
|
112 |
@author Jeongwoo |
|
113 |
@date 2018.06.18 |
|
114 |
''' |
|
115 |
class Transfer(QObject): |
|
116 |
removed = pyqtSignal(QGraphicsItem) |
|
117 |
|
|
118 |
def __init__(self, parent = None): |
|
119 |
QObject.__init__(self, parent) |
내보내기 Unified diff