QWidget benutzt soweit ich weiß lediglich die CPU für derartige Operationen. Allerdings bin ich mir nicht sicher welche Abh. beim Aufruf des painters auftreten.
Andererseits wären gerade Zeichenoperationen prädestiniert für OpenMP.
Code: Alles auswählen
for(int k = 0; k < iNeurPerLayer; k++) {
float fPosDX = fOffsetX + iCounterD*this->geometry().width()/iNeurPerLine;
float fPosDY = iLineD*fOffsetY + (i+1)*this->geometry().height()/iNrOfLayers + m_fSize+m_fSize/6 + m_fSize/2;;
QPointF ptEnd( fPosDX + fSize/2,
fPosDY + fSize/2);
float fAngle = QLineF(ptBeg, ptEnd).angle();
QLineF lineArwBotR(ptBeg, ptEnd);
lineArwBotR.setAngle(90+fAngle);
lineArwBotR.setLength(fSize/16);
lineArwBotR.translate(0, 0);
QLineF lineArwHead(lineArwBotR.p2(), ptEnd);
QLineF lineArwBotL(ptBeg, ptEnd);
lineArwBotL.setAngle(270+fAngle);
lineArwBotL.setLength(fSize/16);
lineArwBotL.translate(0, 0);
QPainterPath path;
path.moveTo(lineArwBotR.p2() );
path.lineTo(lineArwBotL.p2() );
path.lineTo(ptEnd);
path.lineTo(lineArwBotR.p2() );
QLinearGradient grad(ptBeg, ptEnd);
grad.setColorAt(0, Qt::gray);
grad.setColorAt(1, QColor(64,64,64));
QBrush brush(grad);
pen.setColor(Qt::black);
painter.setPen(pen);
painter.setBrush(brush);
painter.drawPath(path);
}