두 번 클릭했을 때 QGraphicsItem
에서 신호를 내보내 주 창에서 위젯을 변경하려고합니다. graphics-scene/-item은 emit()
메서드를 제공하지 않지만이 작업을 수행 할 대체 방법이 있는지 궁금합니다. 아래 코드는 QGraphicsView
클래스 내에서 항목을 두 번 클릭 할 때 터미널에 인쇄하는 함수입니다. 대신 슬롯/신호로 만들 수 있습니까 (QGraphicsItem
이 신호/슬롯을 지원하지 않는 경우)?PySide/PyQT5 : QGraphicsItem에서 신호를 내보내는 방법은 무엇입니까?
import sys
from PySide.QtCore import *
from PySide.QtGui import *
class MyFrame(QGraphicsView):
def __init__(self, parent = None):
super(MyFrame, self).__init__(parent)
scene = QGraphicsScene()
self.setScene(scene)
self.setFixedSize(500, 500)
pen = QPen(QColor(Qt.green))
brush = QBrush(pen.color().darker(150))
item = scene.addEllipse(0, 0, 45, 45, pen, brush)
item.setPos(0,0)
def mouseDoubleClickEvent(self, event):
print("Circle Clicked!")
# this double click event prints to terminal but how to setup
# signal/slot to update the QWidget QLabel text instead?
class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
hbox = QHBoxLayout(self)
top = QLabel("Double Click Green Circle (Howto change this QWidget Label with signals?)")
bottom = MyFrame()
splitter = QSplitter(Qt.Vertical)
splitter.addWidget(top)
splitter.addWidget(bottom)
hbox.addWidget(splitter)
self.setLayout(hbox)
self.setGeometry(0, 0, 500, 600)
self.show()
def main():
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
후 '() self.scene을 맞춤 QGraphicsScene'' '서브 클래스에 itemDoubleClicked' 신호를 정의한다. itemDoubleClicked.emit()'항목에서. – ekhumoro
예가 있습니까? – cvw76
'클래스 GS (QGraphicsScene) : itemDoubleClicked = QtCore.pyqtSignal()' – ekhumoro