Search code examples
c++qtqt4qt5qpainter

How to rotate text for drawText?


I would like to rotate the text 45 degrees?

QFont font;
font.setPixelSize(12);

//grid
for(int i = 0; i < 10; i++){
    painter->drawLine(100, 100 + i * 800/9, 900, 100 + i * 800/9);
    str = QString::number((double)9 - i, 'd', 1);
    painter->setFont(font);
    painter->drawText(75, 100 + i * 800/9 - 6, 40, 40, 1, str);
}

Solution

  • Insert painter->rotate(45); before painter->drawText(75, 100 + i * 800/9 - 6, 40, 40, 1, str); and painter->rotate(-45); after (to restore the rotation angle of the coordinate system):

    painter->rotate(45);
    painter->drawText(75, 100 + i * 800/9 - 6, 40, 40, 1, str);
    painter->rotate(-45);
    

    Depending on if you mean 45 degrees clockwise or anti-clockwise you may need to negate the rotation angles.

    After you rotate the coordinate system, everything you paint will be painted rotated until you restore the painter. A convenient way of saving and restoring the state of the painter is using QPainter::save() and QPainter::restore().