| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [QT4] Перерисовка части примитива |
| Автор: o2n3e 31.10.2011, 00:14 | ||
| Здравствуйте! Есть сцена, на которой рисуется http://s2.ipicture.ru/uploads/20111030/lwBg0SGQ.png. Есть 2 типа примитивов: дуга(окружность) и линия. Эту картинку "рисует" инструмент станка. Я знаю текущую позицию инструмента(в реалтайме). Задача - повторять за инструментом. Как-то так.
Насколько я понимаю, надо вызвать scene()->itemAt() с переданными в него текущими координатами, а дальше делать так, как выше. P.S. Как перерисовывать итем? Пока юзаю кастыль "item->hide();item->show();" |
| Автор: alexvs11 31.10.2011, 00:26 |
| так QWidget::repaint? |
| Автор: o2n3e 31.10.2011, 02:17 | ||
Ничего из данных класов не наслудет repaint, ибо: QGraphicsScene : public QObject QGraphicsView : public QAbstractScrollArea Да и нужно перерисовывать 1-н итем, а не все. |
| Автор: math64 31.10.2011, 07:33 |
| shape() не соответствует paint() Можно же использовать QGraphicsShapeItem вместо самодельного. Добавить на сцену QGraphicsShapeItem с красным пером и QGraphicsLineItem c синим пером. В своём QGraphicsItem можно исользовать [protected] prepareGeometryChange() перед началом изменения геометрии, после изменения геометрии нужно будет вызвать update(); стандартные компоненты сделают это сами. |
| Автор: o2n3e 31.10.2011, 14:16 | ||||
Спасибо! А почему не соответствует? У меня получется та же линия, только из 2-х частей.
Так? QGraphicsShapeItem - это QAbstractGraphicsShapeItem? Если да, то документации на него я с ходу не нашел, кроме 3-х строк описания(которое я не понял). Что это такое? |