움직일 수있는 선택 가능한 그래픽 항목을 여러 개 만들어야합니다. 항목은 다른 항목이 선택되거나 사용자가 장면의 빈 부분을 클릭 할 때까지 선택된 채로 유지되며 모든 항목의 선택이 취소됩니다. 선택한 항목은 선택하지 않은 항목과 다르게 표시되어야합니다. 기본 창의 모든 위젯은 그래픽 항목이 선택되었는지 여부와 해당 항목이있는 경우 쿼리 할 수 있어야합니다.PySide를 사용하여 QGraphicsScene에서 항목을 선택 하시겠습니까?
이 코드는 상품 선택 화면에 이동시킬 수있게한다. 항목은 움직일 때 빨간색으로 :
여기import sys
from PySide import QtGui, QtCore
class MainWindowUi(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.scene = Scene(0, 0, 300, 300, self)
self.view = QtGui.QGraphicsView()
self.setCentralWidget(self.view)
self.view.setScene(self.scene)
self.scene.addItem(Line(25,25,25,50))
self.scene.addItem(Line(30,30,30,70))
self.scene.addItem(Line(35, 40, 35, 65))
class Scene(QtGui.QGraphicsScene):
pass
class Line(QtGui.QGraphicsLineItem):
def __init__(self, *args):
QtGui.QGraphicsLineItem.__init__(self)
self.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True)
self.setFlag(QtGui.QGraphicsItem.ItemIsSelectable, True)
self.setPen(QtGui.QPen(QtCore.Qt.black, 3))
def mousePressEvent(self, e):
self.setPen(QtGui.QPen(QtCore.Qt.red, 5))
QtGui.QGraphicsLineItem.mousePressEvent(self, e)
def mouseReleaseEvent(self, e):
self.setPen(QtGui.QPen(QtCore.Qt.black, 3))
QtGui.QGraphicsLineItem.mouseReleaseEvent(self, e)
if __name__ == '__main__':
a = QtGui.QApplication(sys.argv)
m = MainWindowUi()
m.show()
sys.exit(a.exec_())
내 질문이 있습니다 : Qt는 내
, 이동 때 선택 그래픽 항목입니다 출시 때 선택되지 않은?
그래픽 항목을 마우스 출시 후 선택된 상태로 유지하는 방법
? 예를 들어, self.selected라는 "Line"에 Boolean 변수를 만들어야합니까?
는
어떻게 응용 프로그램 쿼리는 그래픽있는 항목을 선택하고 구분되어 있습니다 ? 예를 들어, "Line"클래스의 각 항목에 고유 ID가 할당되었거나 Qt가 이미 그렇게해야합니까? 해제 Qt와 내
감사합니다. 'item.setData()'에 대한 데모도 매우 유용합니다. –