LINUX.ORG.RU

[Qt4]Заливка QGraphicsItem: продолжение


0

0

Вот что у меня получилось.

void runWindow::paintEvent(QPaintEvent *e) {
    if (it != 0  && colornum != -1) {
QPainter *p = new QPainter (this);
p->setBrush(QBrush (num2col(colornum)));
it->paint(p, new QStyleOptionGraphicsItem(), this);
it = 0;
    }
}

it и colornum общедоступные переменные, заполняются правильно. it - QGraphicsItem, нарисованный на сцене. Как мне без переопределения класса QGraphicsItem реализовать заливку? при перерисовке вывод такой: QPaintEngine::setSystemRect: Should not be changed while engine is active QPaintEngine::setSystemRect: Should not be changed while engine is active QPaintEngine::setSystemRect: Should not be changed while engine is active

Возможно нужно что-то сделать с QPaintEngine?

Вариант с переопределением класса рассматривается в последнюю очередь - я рисую и круги, и прямоугольники.

Какие варианты существуют?

★★★★

Ответ на: комментарий от nu11

Разобрался, нужно было определять QPainter как НЕ указатель.

Варнинги пропали, но ничего не рисуется. Т.е. не заполняется.
Что делать?

pashazz ★★★★
() автор топика
Ответ на: комментарий от pashazz

Ты QPainter создавал, а потом он у тебя утекал. Теперь у тебя текут стайл опшьоны...

Что за заливка такая вообще? Неужели так трудно описать, чего ты хочешь добится?

Посмотри на QPainter::setBackground/setBackgroundMode, и в исходниках как QGraphicsView рисует айтэмы - может пригодится что оттуда.

Spectr ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.