Я пытаюсь нарисовать прямоугольник вокруг элементов, выбранных в сцене (либо через RubberBandDrag, либо ctrl + click для каждого элемента).Использование selectionChanged сигнала от QGraphicsScene для addRect вокруг выбранных элементов
Для того, чтобы сделать это я подклассы QGraphicsScene и переписана метод selectionChanged
для добавления QGraphicsRectItem вокруг выбранной области, но по какой-то причине, этот метод не вызывается, когда элементы выбираются или невыбранные в сцене. Я убедился, что элементы на самом деле можно выбрать.
Вот минимальный пример того, что я пытаюсь сделать:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class DiagramScene(QGraphicsScene):
def __init__(self, parent=None):
super().__init__(parent)
self.selRect = None
def selectionChanged(self):
area = self.selectionArea().boundingRect()
pen = QPen()
pen.setColor(Qt.black)
pen.setStyle(Qt.DashLine)
self.selRect = self.addRect(area, pen)
if __name__ == "__main__":
app = QApplication(sys.argv)
view = QGraphicsView()
view.setDragMode(QGraphicsView.RubberBandDrag)
scene = DiagramScene()
scene.setSceneRect(0, 0, 500, 500)
rect1 = scene.addRect(20, 20, 100, 50)
rect2 = scene.addRect(80, 80, 100, 50)
rect3 = scene.addRect(140, 140, 100, 50)
rect1.setFlag(QGraphicsItem.ItemIsSelectable, True)
rect2.setFlag(QGraphicsItem.ItemIsSelectable, True)
rect3.setFlag(QGraphicsItem.ItemIsSelectable, True)
view.setScene(scene)
view.show()
sys.exit(app.exec_())
Не знаю, как я пропустил это ... Спасибо! – pbreach