프로젝트

일반

사용자정보

개정판 55765a6c

ID55765a6c87174b468b4d15bfb03a7958d9e5a210
상위 3a4cc147
하위 406f883d

humkyung 이(가) 6년 이상 전에 추가함

Split line when inserting symbol
Delete SymbolSvgItem

차이점 보기:

DTI_PID/DTI_PID/LineNoTracer.py
66 66
                    minDist = None
67 67
                    startLine = None
68 68
                    for line in self.lines:
69
                        dist = line.distanceTo(lineno.center())
69
                        dist = line.distanceTo((lineno.center().x(), lineno.center().y()))
70 70
                        if minDist is None:
71 71
                            minDist = dist
72 72
                            startLine = line
DTI_PID/DTI_PID/MainWindow.py
283 283

  
284 284
    '''
285 285
        @brief  create a line
286
        @author humkyung
286 287
    '''
287 288
    def createLine(self):
288 289
        # set imageviewer's command
......
370 371
                lines.append(processLine)
371 372
                for pt in pts:
372 373
                    processLine._pol.append(QPointF(pt[0] + round(area.x), pt[1] + round(area.y)))
373
                processLine._path.addPolygon(processLine._pol)
374
                processLine.setPath(processLine._path)
374
                processLine.buildPath()
375 375
                processLine.setPen(QPen(Qt.blue, 5, Qt.SolidLine))
376 376
                self.graphicsView.scene.addItem(processLine)
377 377

  
......
441 441
                    #### lambda param=svg : bind 'svg' object to lambda('param')
442 442
                    #### If case of 'lambda svg=svg:', function uses the 'svg' value bound to lambda
443 443
                    svg.clicked.connect(lambda param=svg: self.resultTreeWidget.findItem(param))
444
                    svg.removed.connect(self.resultTreeWidget.itemRemoved)
444 445

  
445 446
                    transform = QTransform()
446 447
                    if (1.57 == angle) or (4.71 == angle):
DTI_PID/DTI_PID/QResultTreeWidget.py
139 139
                self.lastClickedItem = graphicItem
140 140

  
141 141
    '''
142
        @brief  find item which has data is given item
143
        @author humkyung
144
        @date   2018.04.23
145
    '''
146
    def findItemByData(self, item):
147
        if type(item) is SymbolSvgItem:
148
            foundItems = self.findItems(item.name, Qt.MatchExactly|Qt.MatchRecursive, 0)
149
            for foundItem in foundItems:
150
                data = foundItem.data(0, self.TREE_DATA_ROLE)
151
                if data is not None and data is item:
152
                    return foundItem
153
        elif type(item) is QEngineeringTextItem:
154
            foundItems = self.findItems(item.text() , Qt.MatchExactly|Qt.MatchRecursive, 0)
155
            for foundItem in foundItems:
156
                data = foundItem.data(0, self.TREE_DATA_ROLE)
157
                if data is not None and data is item:
158
                    return foundItem
159
        
160
        return None
161

  
162
    '''
142 163
        @brief      Find QTreeWidgetItem by SymbolSvgItem object
143 164
        @author     Jeongwoo
144 165
        @date       18.04.11
......
157 178
                        self.itemClickEvent(fItem, 0, True)
158 179
                        return
159 180
        ## Not found
160
        QMessageBox.about(self.ui.buttonBox, "알림", "선택하신 심볼의 데이터를 찾을 수 없습니다.")
181
        QMessageBox.about(self.ui.buttonBox, "알림", "선택하신 심볼의 데이터를 찾을 수 없습니다.")
182
    
183
    '''
184
        @brief  remove given item
185
        @author humkyung
186
        @date   2018.04.23
187
    '''
188
    @pyqtSlot(SymbolSvgItem)
189
    def itemRemoved(self, item):
190
        foundItem = self.findItemByData(item)
191
        if foundItem is not None:
192
            foundItem.parent().removeChild(foundItem)
DTI_PID/DTI_PID/QtImageViewer.py
46 46
    rightMouseButtonReleased = pyqtSignal(float, float)
47 47
    leftMouseButtonDoubleClicked = pyqtSignal(float, float)
48 48
    rightMouseButtonDoubleClicked = pyqtSignal(float, float)
49
    itemRemoved = pyqtSignal(SymbolSvgItem)
49 50

  
50 51
    def __init__(self):
51 52
        QGraphicsView.__init__(self)
......
279 280
            self.rightMouseButtonDoubleClicked.emit(scenePos.x(), scenePos.y())
280 281
        QGraphicsView.mouseDoubleClickEvent(self, event)
281 282

  
283
    '''
284
        @brief  key press event
285
        @author Jeongwoo
286
        @date   2018.??.??
287
    '''
282 288
    def keyPressEvent(self, event):
283 289
        if event.key() == Qt.Key_Control:
284 290
            self.isPressCtrl = True
285
            print("Pressed Ctrl")
291
        elif event.key() == Qt.Key_Delete:
292
            pass
293

  
294
        QGraphicsView.keyPressEvent(self, event)
286 295

  
296
    '''
297
        @brief  key release event
298
        @author Jeongwoo
299
        @date   2018.??.??
300
    '''
287 301
    def keyReleaseEvent(self, event):
288 302
        if event.key() == Qt.Key_Control:
289 303
            self.isPressCtrl = False
290
            print("Released Ctrl")
304
        elif event.key() == Qt.Key_Delete:
305
            pass
306

  
307
        QGraphicsView.keyReleaseEvent(self, event)
291 308

  
292 309
    def wheelEvent(self, event):
293 310
        if self.isPressCtrl == True:
DTI_PID/DTI_PID/Shapes/QEngineeringLineItem.py
4 4
try:
5 5
    from PyQt5.QtCore import Qt, QPointF, QRectF, pyqtSignal, QT_VERSION_STR
6 6
    from PyQt5.QtGui import QImage, QPixmap, QPainterPath, QBrush, QPen, QTransform
7
    from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene, QFileDialog, QGraphicsItem, QAbstractGraphicsShapeItem
7
    from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene, QFileDialog, QGraphicsItem, QAbstractGraphicsShapeItem, QGraphicsPathItem
8 8
except ImportError:
9 9
    try:
10 10
        from PyQt4.QtCore import Qt, QRectF, pyqtSignal, QT_VERSION_STR
......
16 16
from QGraphicsBoundingBoxItem import QGraphicsBoundingBoxItem
17 17

  
18 18
class QEngineeringLineItem(QGraphicsPolylineItem):
19
    removed = pyqtSignal(QGraphicsPathItem)
20

  
19 21
    def __init__(self, parent=None):
20 22
        QGraphicsPolylineItem.__init__(self, parent)
21 23

  
22 24
        self.conns = [None, None]
23 25

  
24 26
        self.setPen(QPen(Qt.blue, 5, Qt.SolidLine))
25
        self.setFlags(QGraphicsItem.ItemIsSelectable)
27
        self.setFlags(QGraphicsItem.ItemIsSelectable|QGraphicsItem.ItemIsFocusable)
26 28

  
27 29
        self.setAcceptHoverEvents(True)
30
        self.setAcceptTouchEvents(True)
28 31

  
29 32
    '''
30 33
        @brief  construct a ProcessLineItem
......
160 163
        @date   2018.04.22
161 164
    '''
162 165
    def insertSymbol(self, symbol, pos):
166
        import math
163 167
        from shapely.geometry import Point
164 168
        from shapely import affinity
165 169

  
......
172 176
        transform.rotateRadians(-angle)
173 177
        transform.translate(-symbol.origin[0], -symbol.origin[1])
174 178
        symbol.setTransform(transform)
175
        for i in range(len(symbol.connPts)):
176
            rotatedPt = affinity.rotate(Point(symbol.connPts[i][0], symbol.connPts[i][1]), -angle, Point(symbol.origin[0], symbol.origin[1]), use_radians=True)
177
            symbol.connPts[i] = (origin.x+rotatedPt.x, origin.y+rotatedPt.y)
179
        if 2 == len(symbol.connPts):    # 2 way component
180
            for i in range(len(symbol.connPts)):
181
                rotatedPt = affinity.rotate(Point(symbol.connPts[i][0] - symbol.origin[0], symbol.connPts[i][1] - symbol.origin[1]), -angle, Point(0, 0), use_radians=True)
182
                symbol.connPts[i] = (origin.x+rotatedPt.x, origin.y+rotatedPt.y)
183

  
184
            dx1 = symbol.connPts[0][0] - self.startPoint()[0]
185
            dy1 = symbol.connPts[0][1] - self.startPoint()[1]
186
            length1 = math.sqrt(dx1*dx1 + dy1*dy1)
187
            dx2 = symbol.connPts[1][0] - self.startPoint()[0]
188
            dy2 = symbol.connPts[1][1] - self.startPoint()[1]
189
            length2 = math.sqrt(dx2*dx2 + dy2*dy2)
190

  
191
            if length1 < length2:
192
                processLine = QEngineeringLineItem()
193
                processLine._pol.append(QPointF(symbol.connPts[1][0], symbol.connPts[1][1]))
194
                processLine._pol.append(QPointF(self.endPoint()[0], self.endPoint()[1]))
195
                processLine.buildPath()
196
                processLine.setPen(QPen(Qt.blue, 5, Qt.SolidLine))
197
                processLine.conns.append(symbol)
198
                processLine.conns.append(self.conns[1])
199
                self.scene().addItem(processLine)
200

  
201
                self._pol.replace(self._pol.count() - 1, QPointF(symbol.connPts[0][0], symbol.connPts[0][1]))
202
                self.conns[1] = symbol
203

  
204
                symbol.conns = []
205
                symbol.conns.append(self)
206
                symbol.conns.append(processLine)
207
            else:
208
                processLine = QEngineeringLineItem()
209
                processLine._pol.append(QPointF(symbol.connPts[0][0], symbol.connPts[0][1]))
210
                processLine._pol.append(QPointF(self.endPoint()[0], self.endPoint()[1]))
211
                processLine.buildPath()
212
                processLine.setPen(QPen(Qt.blue, 5, Qt.SolidLine))
213
                processLine.conns.append(symbol)
214
                processLine.conns.append(self.conns[1])
215
                self.scene().addItem(processLine)
216

  
217
                self._pol.replace(self._pol.count() - 1, QPointF(symbol.connPts[1][0], symbol.connPts[1][1]))
218
                self.conns[1] = symbol
219

  
220
                symbol.conns = []
221
                symbol.conns.append(processLine)
222
                symbol.conns.append(self)
223

  
224
            self.buildPath()
225
            self.update()
226

  
178 227
        symbol.loc = [origin.x - symbol.origin[0], origin.y - symbol.origin[1]]
179 228
        symbol.size = [symbol.boundingRect().width(), symbol.boundingRect().height()]
180 229
        self.scene().addItem(symbol)
181
        
230
    
231
    '''
232
        @brief  remove symbol
233
        @author humkyung
234
        @date   2018.04.23
235
    '''
236
    def removeSymbol(self, symbol):
237
        import math
238

  
239
        if 2 == len(symbol.conns):  # 2-way component
240
            connected = symbol.conns[0] if symbol.conns[0] is not self else symbol.conns[1]
241
            
242
            pts = []
243
            pts.append(self.startPoint())
244
            pts.append(self.endPoint())
245
            pts.append(connected.startPoint())
246
            pts.append(connected.endPoint())
247

  
248
            self.scene().removeItem(connected)
249

  
250
            start = None
251
            end = None
252
            maxDist = None
253
            for i in range(len(pts)):
254
                for j in range(i+1,len(pts)):
255
                    dx = pts[i][0] - pts[j][0]
256
                    dy = pts[i][1] - pts[j][1]
257
                    dist = math.sqrt(dx*dx + dy*dy)
258
                    if maxDist is None:
259
                        maxDist = dist
260
                        start = pts[i]
261
                        end = pts[j]
262
                    elif dist > maxDist:
263
                        maxDist = dist
264
                        start = pts[i]
265
                        end = pts[j]
266

  
267
            if (pts[0] == end) or (pts[1] == start): start,end = end,start
268

  
269
            self._pol.clear()
270
            self._pol.append(QPointF(start[0], end[1]))
271
            self._pol.append(QPointF(end[0], end[1]))
272
            self.buildPath()
273
            self.update()
274

  
182 275
    def hoverEnterEvent(self, event):
183 276
        pass
184 277

  
......
186 279
        pass
187 280

  
188 281
    def hoverMoveEvent(self, event):
189
        pass
282
        pass
283
    
284
    '''
285
        @brief  remove item when user press delete key
286
        @author humkyung
287
        @date   2018.04.23
288
    '''
289
    def keyPressEvent(self, event): 
290
        if event.key() == Qt.Key_Delete:
291
            self.removed.emit(self)
292
            self.scene().removeItem(self)
DTI_PID/DTI_PID/Shapes/QEngineeringTextItem.py
16 16
from QGraphicsBoundingBoxItem import QGraphicsBoundingBoxItem
17 17

  
18 18
class QEngineeringTextItem(QGraphicsTextItem):
19
    removed = pyqtSignal(QGraphicsTextItem)
20

  
19 21
    def __init__(self, parent=None):
20 22
        QGraphicsTextItem.__init__(self, parent)
21 23

  
22 24
        self.loc = None
23 25
        self.size = None
24 26
        self.conns = []
25
        self.setFlags(QGraphicsItem.ItemIsSelectable)
27
        self.setFlags(QGraphicsItem.ItemIsSelectable|QGraphicsItem.ItemIsFocusable)
26 28
        self.setAcceptHoverEvents(True)
29
        self.setAcceptTouchEvents(True)
27 30

  
28 31
    '''
29 32
        @brief  return text string
......
48 51
        pass
49 52

  
50 53
    def hoverMoveEvent(self, event):
51
        pass
54
        pass
55

  
56
    '''
57
        @brief  remove item when user press delete key
58
        @author humkyung
59
        @date   2018.04.23
60
    '''
61
    def keyPressEvent(self, event): 
62
        if event.key() == Qt.Key_Delete:
63
            self.removed.emit(self)
64
            self.scene().removeItem(self)
DTI_PID/DTI_PID/Shapes/QGraphicsPolylineItem.py
14 14
class QGraphicsPolylineItem(QGraphicsPathItem):
15 15
    def __init__(self, parent=None):
16 16
        QGraphicsPathItem.__init__(self, parent)
17
        #self.setFlag(QGraphicsItem.ItemIsMovable)
18
        self.setFlags(QGraphicsItem.ItemIsSelectable)
17
        self.setFlags(QGraphicsItem.ItemIsSelectable|QGraphicsItem.ItemIsFocusable)
19 18
        #self.setBrush(QBrush(Qt.red))
20 19

  
21 20
        self._vertices = []
22 21
        self.isCreated = False
23 22
        self._pt = None
24 23
        self._pol = QPolygonF()
25
        self._path = QPainterPath()
24
        self._path = None
26 25

  
27 26
    '''
28 27
        @brief  construct a polyline
......
50 49
        self.isCreated = False
51 50

  
52 51
    '''
52
        @build  build path
53
        @author humkyung
54
        @date   2018.04.23
55
    '''
56
    def buildPath(self):
57
        self._path = QPainterPath()
58
        self._path.addPolygon(self._pol)
59
        self.setPath(self._path)
60

  
61
    '''
53 62
        @brief  return start point
54 63
        @author humkyung
55 64
        @date   2018.04.16
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py
11 11

  
12 12
class SymbolSvgItem(QGraphicsSvgItem):
13 13
    clicked = pyqtSignal(QGraphicsSvgItem)
14
    removed = pyqtSignal(QGraphicsSvgItem)
14 15

  
15 16
    '''
16 17
        @history    18.04.11    Jeongwoo    Add Variable (Name, Type)
......
18 19
    def __init__(self, path):
19 20
        super(SymbolSvgItem, self).__init__(path)
20 21

  
21
        self.setFlags(QGraphicsItem.ItemIsSelectable|
22
                      QGraphicsItem.ItemIsMovable)
22
        self.setFlags(QGraphicsItem.ItemIsSelectable|QGraphicsItem.ItemIsFocusable)
23
                      #QGraphicsItem.ItemIsMovable)
23 24
        
24 25
        self.name = ''
25 26
        self.type = ''
......
30 31

  
31 32
        self.setAcceptHoverEvents(True)
32 33
        self.setAcceptedMouseButtons(Qt.LeftButton)
34
        self.setAcceptTouchEvents(True)
33 35

  
34 36
    '''
35 37
        @brief  return bounding box of symbol
......
108 110
        self.clicked.emit(self)
109 111

  
110 112
    '''
113
        @brief  remove item when user press delete key
114
        @author humkyung
115
        @date   2018.04.23
116
    '''
117
    def keyPressEvent(self, event): 
118
        if event.key() == Qt.Key_Delete:
119
            for conn in self.conns:
120
                conn.removeSymbol(self)
121
                break
122

  
123
            self.removed.emit(self)
124
            self.scene().removeItem(self)
125

  
126
    '''
111 127
        @brief  override paint(draw connection points)
112 128
        @author humkyung
113 129
        @date   2018.04.21
DTI_PID/DTI_PID/UI/OcrResultDialog.ui
13 13
  <property name="windowTitle">
14 14
   <string>OCR</string>
15 15
  </property>
16
  <widget class="QDialogButtonBox" name="ocrDialogButtonBox">
17
   <property name="geometry">
18
    <rect>
19
     <x>450</x>
20
     <y>370</y>
21
     <width>341</width>
22
     <height>32</height>
23
    </rect>
24
   </property>
25
   <property name="orientation">
26
    <enum>Qt::Horizontal</enum>
27
   </property>
28
   <property name="standardButtons">
29
    <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
30
   </property>
31
  </widget>
32
  <widget class="QWidget" name="gridLayoutWidget">
33
   <property name="geometry">
34
    <rect>
35
     <x>10</x>
36
     <y>10</y>
37
     <width>781</width>
38
     <height>351</height>
39
    </rect>
40
   </property>
41
   <layout class="QGridLayout" name="gridLayout">
42
    <item row="1" column="0">
43
     <widget class="QWidget" name="widget_2" native="true">
44
      <widget class="QWidget" name="verticalLayoutWidget">
45
       <property name="geometry">
46
        <rect>
47
         <x>10</x>
48
         <y>10</y>
49
         <width>761</width>
50
         <height>151</height>
51
        </rect>
52
       </property>
53
       <layout class="QVBoxLayout" name="detectResultVerticalLayout">
54
        <item>
55
         <widget class="QLabel" name="detectResultLabel">
56
          <property name="font">
57
           <font>
58
            <weight>75</weight>
59
            <bold>true</bold>
60
           </font>
61
          </property>
62
          <property name="text">
63
           <string>검출 결과</string>
64
          </property>
65
         </widget>
66
        </item>
67
        <item>
68
         <widget class="QTextEdit" name="detectResultTextEdit"/>
16
  <layout class="QGridLayout" name="gridLayout_3">
17
   <item row="0" column="0">
18
    <layout class="QGridLayout" name="gridLayout">
19
     <item row="1" column="0">
20
      <widget class="QWidget" name="widget_2" native="true">
21
       <layout class="QGridLayout" name="gridLayout_5">
22
        <item row="0" column="0">
23
         <layout class="QVBoxLayout" name="detectResultVerticalLayout">
24
          <item>
25
           <widget class="QLabel" name="detectResultLabel">
26
            <property name="font">
27
             <font>
28
              <weight>75</weight>
29
              <bold>true</bold>
30
             </font>
31
            </property>
32
            <property name="text">
33
             <string>검출 결과</string>
34
            </property>
35
           </widget>
36
          </item>
37
          <item>
38
           <widget class="QTextEdit" name="detectResultTextEdit"/>
39
          </item>
40
         </layout>
69 41
        </item>
70 42
       </layout>
71 43
      </widget>
72
     </widget>
73
    </item>
74
    <item row="0" column="0">
75
     <widget class="QWidget" name="widget" native="true">
76
      <widget class="QWidget" name="verticalLayoutWidget_2">
77
       <property name="geometry">
78
        <rect>
79
         <x>0</x>
80
         <y>0</y>
81
         <width>781</width>
82
         <height>171</height>
83
        </rect>
84
       </property>
85
       <layout class="QVBoxLayout" name="tVerticalLayout">
86
        <item>
87
         <widget class="QWidget" name="targetToolsWidget" native="true">
88
          <widget class="QWidget" name="gridLayoutWidget_2">
89
           <property name="geometry">
90
            <rect>
91
             <x>10</x>
92
             <y>10</y>
93
             <width>761</width>
94
             <height>25</height>
95
            </rect>
96
           </property>
97
           <layout class="QGridLayout" name="gridLayout_2">
98
            <item row="0" column="2">
99
             <widget class="QPushButton" name="clockPushButton">
100
              <property name="text">
101
               <string>Clock</string>
102
              </property>
103
             </widget>
104
            </item>
105
            <item row="0" column="1">
106
             <widget class="QPushButton" name="counterClockPushButton">
107
              <property name="text">
108
               <string>CounterClock</string>
44
     </item>
45
     <item row="0" column="0">
46
      <widget class="QWidget" name="widget" native="true">
47
       <layout class="QGridLayout" name="gridLayout_4">
48
        <item row="0" column="0">
49
         <layout class="QVBoxLayout" name="tVerticalLayout">
50
          <item>
51
           <widget class="QWidget" name="targetToolsWidget" native="true">
52
            <widget class="QWidget" name="gridLayoutWidget_2">
53
             <property name="geometry">
54
              <rect>
55
               <x>10</x>
56
               <y>10</y>
57
               <width>761</width>
58
               <height>25</height>
59
              </rect>
60
             </property>
61
             <layout class="QGridLayout" name="gridLayout_2">
62
              <item row="0" column="2">
63
               <widget class="QPushButton" name="clockPushButton">
64
                <property name="text">
65
                 <string>Clock</string>
66
                </property>
67
               </widget>
68
              </item>
69
              <item row="0" column="1">
70
               <widget class="QPushButton" name="counterClockPushButton">
71
                <property name="text">
72
                 <string>CounterClock</string>
73
                </property>
74
               </widget>
75
              </item>
76
              <item row="0" column="3">
77
               <widget class="QPushButton" name="redetectPushButton">
78
                <property name="text">
79
                 <string>Re-Detect</string>
80
                </property>
81
               </widget>
82
              </item>
83
              <item row="0" column="0">
84
               <widget class="QLabel" name="targetTextLabel">
85
                <property name="font">
86
                 <font>
87
                  <weight>75</weight>
88
                  <bold>true</bold>
89
                 </font>
90
                </property>
91
                <property name="text">
92
                 <string>검출 대상</string>
93
                </property>
94
               </widget>
95
              </item>
96
             </layout>
97
            </widget>
98
            <widget class="QWidget" name="widget_3" native="true">
99
             <property name="geometry">
100
              <rect>
101
               <x>10</x>
102
               <y>40</y>
103
               <width>761</width>
104
               <height>121</height>
105
              </rect>
106
             </property>
107
             <widget class="QWidget" name="verticalLayoutWidget_3">
108
              <property name="geometry">
109
               <rect>
110
                <x>0</x>
111
                <y>0</y>
112
                <width>761</width>
113
                <height>121</height>
114
               </rect>
109 115
              </property>
116
              <layout class="QVBoxLayout" name="targetVerticalLayout"/>
110 117
             </widget>
111
            </item>
112
            <item row="0" column="3">
113
             <widget class="QPushButton" name="redetectPushButton">
114
              <property name="text">
115
               <string>Re-Detect</string>
116
              </property>
117
             </widget>
118
            </item>
119
            <item row="0" column="0">
120
             <widget class="QLabel" name="targetTextLabel">
121
              <property name="font">
122
               <font>
123
                <weight>75</weight>
124
                <bold>true</bold>
125
               </font>
126
              </property>
127
              <property name="text">
128
               <string>검출 대상</string>
129
              </property>
130
             </widget>
131
            </item>
132
           </layout>
133
          </widget>
134
          <widget class="QWidget" name="widget_3" native="true">
135
           <property name="geometry">
136
            <rect>
137
             <x>10</x>
138
             <y>40</y>
139
             <width>761</width>
140
             <height>121</height>
141
            </rect>
142
           </property>
143
           <widget class="QWidget" name="verticalLayoutWidget_3">
144
            <property name="geometry">
145
             <rect>
146
              <x>0</x>
147
              <y>0</y>
148
              <width>761</width>
149
              <height>121</height>
150
             </rect>
151
            </property>
152
            <layout class="QVBoxLayout" name="targetVerticalLayout"/>
118
            </widget>
153 119
           </widget>
154
          </widget>
155
         </widget>
120
          </item>
121
         </layout>
156 122
        </item>
157 123
       </layout>
158 124
      </widget>
159
     </widget>
160
    </item>
161
   </layout>
162
  </widget>
125
     </item>
126
    </layout>
127
   </item>
128
   <item row="1" column="0">
129
    <widget class="QDialogButtonBox" name="ocrDialogButtonBox">
130
     <property name="orientation">
131
      <enum>Qt::Horizontal</enum>
132
     </property>
133
     <property name="standardButtons">
134
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
135
     </property>
136
    </widget>
137
   </item>
138
  </layout>
163 139
 </widget>
164 140
 <resources/>
165 141
 <connections>

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)