Używam poniższej funkcji do rysowania icon. Funkcja "zamienia" label na ikonę. Rysowanie działa poprawnie, tylko w konsoli po uruchomieniu dostaję taki komunikat:
QPainter::fontMetrics: Painter not active
QPainter::fontMetrics: Painter not active
QPainter::fontMetrics: Painter not active
QPainter::fontMetrics: Painter not active
Co jest tego przyczyną?
void MainWindow::drawIcon(QLabel* label, const QPixmap& pix, const QString txt )
{
label->setText("");
QPainter p;
int strWidth = p.fontMetrics().width( txt );
int strHeight = p.fontMetrics().height();
int pixWidth = pix.width();
int pixHeight = pix.height();
QPixmap res( qMax(strWidth, pixWidth), strHeight + pixHeight + 6 );
res.fill(Qt::white);
p.begin( &res );
int start = 0;
if ( pixWidth < strWidth )
start = (strWidth-pixWidth)/2;
p.drawPixmap( start ,0, pix );
p.setFont(QFont("Helvetica", 12));
p.drawText( QRect( 0,pixHeight, pixWidth, strHeight+6), Qt::AlignCenter, txt );
p.end();
label->setPixmap(res);
label->setFixedSize(res.size());
}