![]() |
|
|
![]()
|
|
| o2n3e |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.8.2011 Репутация: -1 Всего: -5 |
Здравствуйте!
Есть сцена, на которой рисуется не сложная векторная графика. Есть 2 типа примитивов: дуга(окружность) и линия. Эту картинку "рисует" инструмент станка. Я знаю текущую позицию инструмента(в реалтайме). Задача - повторять за инструментом. Как-то так.
Насколько я понимаю, надо вызвать scene()->itemAt() с переданными в него текущими координатами, а дальше делать так, как выше. P.S. Как перерисовывать итем? Пока юзаю кастыль "item->hide();item->show();" |
|||
|
||||
| alexvs11 |
|
|||
|
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: 2 Всего: 10 |
так QWidget::repaint?
|
|||
|
||||
| o2n3e |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.8.2011 Репутация: -1 Всего: -5 |
Ничего из данных класов не наслудет repaint, ибо: QGraphicsScene : public QObject QGraphicsView : public QAbstractScrollArea Да и нужно перерисовывать 1-н итем, а не все. |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
shape() не соответствует paint()
Можно же использовать QGraphicsShapeItem вместо самодельного. Добавить на сцену QGraphicsShapeItem с красным пером и QGraphicsLineItem c синим пером. В своём QGraphicsItem можно исользовать [protected] prepareGeometryChange() перед началом изменения геометрии, после изменения геометрии нужно будет вызвать update(); стандартные компоненты сделают это сами. Это сообщение отредактировал(а) math64 - 31.10.2011, 07:35 |
|||
|
||||
| o2n3e |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.8.2011 Репутация: -1 Всего: -5 |
Спасибо! А почему не соответствует? У меня получется та же линия, только из 2-х частей.
Так? QGraphicsShapeItem - это QAbstractGraphicsShapeItem? Если да, то документации на него я с ходу не нашел, кроме 3-х строк описания(которое я не понял). Что это такое? Это сообщение отредактировал(а) o2n3e - 31.10.2011, 14:20 |
||||
|
|||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
В paint() проверяется, задана ли точка point и делается различная отрисовка. В shape() этого не делается. При отрисовке нельза выходить за границы shape() - иначе при перерисовке будут оставаться следы, перерисовываться будет boundingRect(), Для isSelected() компонента можно вылезать за shape(), но в пределах clipPath(). Ошибся в названии: QGraphicsPathItem, QAbstractGraphicsShapeItem - это её базовый класс; Если хочешь писать свой компонент, можешь наследоваться от него - будет pen и brush. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |