Задача. На кнопке (QToolButton) будет выводиться надпись, например, такая:
" Call
 $1.50"
В две строки.
Нужно вместо значка "$" выводить некоторый пиксмап (символ валюты).
Суть проблемы составляет то, что для этой кнопки используются стили. И кнопка должна быть отрисована с учетом этих стилей, задаваемых извне.
В итоге получился такой код.
C++ (Qt)
    QStylePainter painter(this);
 
    QStyleOptionToolButton opt;
    initStyleOption(&opt);
    opt.text = QString();
 
    painter.drawComplexControl(QStyle::CC_ToolButton,opt);
 
    QString val = pixmap_.isNull() ? value_ : value_.replace("$","   ");
    opt.text = QString("%1\n%2").arg(name_).arg(val);
    painter.drawControl(QStyle::CE_ToolButtonLabel,opt);
    if(!pixmap_.isNull())
    {
        int shiftX = 0, shiftY = 0;
        if (opt.state & (QStyle::State_Sunken | QStyle::State_On)) {
            shiftX = style()->pixelMetric(QStyle::PM_ButtonShiftHorizontal, &opt, this);
            shiftY = style()->pixelMetric(QStyle::PM_ButtonShiftVertical, &opt, this);
        }
        int X = (width() - opt.fontMetrics.width(val)) / 2;
        painter.drawPixmap(X + shiftX - 2, height() / 2 + 6 + shiftY,pixmap_);
    }
Он кривоват в плане нахождения позиции отрисовки значка.
Т.к. для отрисовки текста использую painter.drawControl(QStyle::CE_ToolButtonLabel,opt);
то сложно определить как он отрисует.
Поэтому хотелось бы функцию, которая бы рисовала одну строчку по заданным координатам с текущим стилем.
Т.е. чтобы результат был как у этой строчки.
Примеры, советы приветствуются.