Ограничение видимости QGraphicsItems - PullRequest
0 голосов
/ 21 апреля 2020

Я новичок в PyQt и программировании в целом. Это мой первый вопрос - извините, если мне неясно.

Я занимаюсь разработкой проекта по визуализации числовых данных. В настоящее время я нарисовал систему координат с помощью QGraphicsRectItem в качестве «области диаграммы», QgraphicsLineItems в качестве отметок и QGraphicsTextitems для заголовков.

Я застрял в двух разных задачах, которые несколько схожи: 1005 *

  1. Мне нужно нарисовать сетку с указанным размером сетки. Как я могу убедиться, что квадраты (нарисованные с помощью QGraphicRectItem) не будут видны за пределами области диаграммы? Видите, проблема в том, что «внешний» GraphicsScene имеет большую геометрию, чем «область диаграммы», в которой его собственная геометрия установлена ​​в GraphicsRectItem. Следовательно, переход на все oop, который будет рисовать квадраты внутри диапазона (области диаграммы), в конечном итоге будет рисовать квадраты за пределами области диаграммы, если у их размера квадрата есть остаток при делении на ширину области диаграммы.

Изображение проблемы сетки (вне области диаграммы)

Так что я думаю, было бы идеально нарисовать квадраты от 0,0 по всему главному окну и показать только часть квадраты, которые появляются внутри области диаграммы (не grpahicssscene, поскольку она больше). Я попытался найти функции, которые могли бы указать границы, где графические элементы видны, но не смогли найти ничего подходящего.

Мне также нужно убедиться, что пользователь может указать границы для осей. В настоящее время мой код использует только строки aws, если масштабированные координаты x или y находятся внутри границ координат области диаграммы. Таким образом, существуют пустые места, когда одна из координат находится за пределами области диаграммы (рисунок ниже).

Полагаю, что оптимальным решением этой проблемы также было бы просто нарисовать все линии и ограничить их видимость областью диаграммы (т.е. только той частью линий, которая находится внутри координат областей диаграммы). будет видно).

Изображение проблемы оси (пробелы)

Я был бы очень признателен за помощь по этим вопросам. Я вполне уверен, что я мог бы быть более ясным, но проблема в двух словах:

GraphicsScene - это целая белая область в MainWindow (с геометрией (0,0,730,635), но «область диаграммы», которая является QGraphicsRectItem, имеет только геометрию (100 100 500 400). Таким образом, у меня возникли проблемы с выяснением того, как рисовать графические элементы, которые будут видны только внутри области диаграммы.

...