![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
lpenguin |
![]() ![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 26.11.2010 Пользователь №: 2223 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Пытаюсь сейчас в Qt отрисовать граф, соотвественно, если между двумя вершинами есть больше чем 2 (или больше) ребра,
я рисую их с помощью метода QPainterPath.cubicTo как кривые, чтобы их "раздвинуть". Примерно так: ![]() Проблема вот в чем - ребра это классы, унаследованные от QGraphicsItem, и нужно чтобы при наведении на одно из ребер оно подсвечивалось. Переопределил paint (в нем с помощью QPainterPath отрисовывается кривая) , boundingRect (это границы того QPainterPath ) и shape( возвращает QPainterPath) - однако если с одной стороны ребер больше чем два, то выделяется все время только одно, которое больше отстоит от вершин. На картинке подсвечивается либо верхнее, либо нижнее например. Вроде все довольно просто, однако как-будто ребра перекрывают одно другое. =( вот код paint: Раскрывающийся текст
shape:
boundingRect
может кто-нибудь подсказать в чем дело? |
|
|
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Алексей1153, это какой-то жуткий вариант.
Надо один раз разобраться с причиной проблемы и всё. то выделяется все время только одно, которое больше отстоит от вершин а не рисуется ли оно после внутренних? Т.е. находится ли оно ближе к наблюдателю, чем внутренние рёбра
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 9.6.2025, 22:11 |