я использую QGraphicsView
, QGrapichsScene
а также QGraphicsItem
для рисования некоторых диаграмм. Я реализовал QGraphicsItem::paint
функция для рисования текста (значения диаграмм), но она не вызывается каждый раз, когда нужно нарисовать что-то новое. мой paint
функция
void CLabelItem::paint(QPainter *painter,
const QStyleOptionGraphicsItem* /*option*/, QWidget* /*widget = 0*/)
{
if ( GetValue() < 0 )
{
return;
}
painter->drawText(boundingRect(), m_value.toString());
}
Итак, мой вопрос — почему QGraphicsItem::paint
можно не называть и как мне сделать так, чтобы его называли?
Вам нужно позвонить QGraphicsItem::update()
от функции, которая изменяет m_value
переменная для запуска перекраски.
В общем, с помощью Qt графические элементы рисуются, когда paintEvent
называется, и тогда вы можете обрабатывать живопись внутри paint
функция.