Этот ответ направлен на конкретную проблему, упомянутую в комментариях под вопросом: статическая сетка, в которой можно «выбрать» различные ячейки сетки.
Ключевая идея здесь заключается в том, что сетка не деформируется , и выбор ячейки является "редким" случаем. Идея, которая приходит в голову, состоит в том, чтобы определить backgroundBrush
свойство из QGraphicsScene
, чтобы нарисовать статическую сетку для вас, возможно, используя простой способный тайл QPixmap
. Это эффективно, так как это просто фон сцены и не содержит динамических объектов.
Сделать ячейки доступными для выбора - это следить за событиями мыши в сцене, и когда пользователь щелкает где-то в сцене, вы можете создать прямоугольник нужного цвета в соответствующем месте. Это позволяет вам по существу иметь бесконечную сетку, в которой может быть выбрана любая ячейка.
Чтобы наблюдать за событиями мыши, создайте подкласс QGraphicsScene
и переопределите метод eventFilter
, где вы будете обрабатывать некоторые события мыши для работы с выборками. Теперь вы можете установить этот фильтр, вызвав метод installEventFilter
вашей сцены.
Внутри вашего метода eventFilter
вы по существу будете следить за событиями мыши и в зависимости от их положения создавать новые цветные прямоугольники в соответствующем месте сцены.
Надеюсь, это имеет смысл.