Всем привет.
Так как paint уходит на вторйо план по скорости работы и отрисовки то решил переписать на scene graph все руботу.
И как бы все обьекты работают, но вот одна ошибка не дает покоя(замедление работы очень сильное), и возможно это влечет за собою замедление работы.
QMLIcon_QML_64 : Update called for a item without content
QMLIcon_QML_65 : Update called for a item without content
QMLIcon : Update called for a item without content
QMLIcon : Update called for a item without content
QMLIcon : Update called for a item without content
QMLIcon : Update called for a item without content
Сам код данного класса выглядит вот так, кидаю старую реализацию и новую
//void QMLIcon::paint(QPainter *painter)
//{
// painter->save();
// QRectF rect = boundingRect();
//
// QPen pen(m_color);
// painter->setPen(pen);
//
// QBrush brush(m_color);
// painter->setBrush(brush);
//
// QTransform transform;
// transform.translate(rect.center().x(), rect.center().y());
// painter->setTransform(transform, true);
//
// iconDatabase::drawIcon(painter, m_icon);
// painter->restore();
//}
QSGNode *QMLIcon::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *updatePaintNodeData)
{
Q_UNUSED(updatePaintNodeData)
QImage canvas(boundingRect().width(), boundingRect().height(), QImage::Format_RGBA8888);
canvas.fill(QColor("transparent"));
QPainter painter(&canvas);
painter.save();
QPen pen(m_color);
painter.setPen(pen);
QBrush brush(m_color);
painter.setBrush(brush);
QTransform transform;
transform.translate(boundingRect().center().x(), boundingRect().center().y());
painter.setTransform(transform, true);
iconDatabase::drawIcon(&painter, m_icon);
painter.restore();
auto pTexture = window()->createTextureFromImage(canvas);
if(!oldNode)
{
m_pTextureNode = new QSGSimpleTextureNode;
m_pTextureNode->setRect(boundingRect());
m_pTextureNode->setTexture(pTexture);
return m_pTextureNode;
}
m_pTextureNode->setTexture(pTexture);
return oldNode;
}
Надеюсь что те кто работали со scene graph отзовутся, не поулчается найти причину ошибки.
Заранее спасибо.