I need a QPushButton with two colors in the text. I found a solution with a html code in QTextDocument and it's working. But I need center align and the html code isn't working.
QTextDocument Text;
Text.setHtml("<p align=center><font>Button</font><br/><font color=yellow>1</font></p>");
QPixmap pixmap(Text.size().width(), Text.size().height());
pixmap.fill( Qt::transparent );
QPainter painter(&pixmap);
Text.drawContents(&painter, pixmap.rect());
QIcon ButtonIcon(pixmap);
ui->toolButton->setText("");
ui->toolButton->setIcon(ButtonIcon);
ui->toolButton->setIconSize(pixmap.rect().size());
And I get,
The same code HTML is working in a QLabel
ui->label->setText("<p align=center><font>Label</font><br/><font color=yellow>1</font></p>");
Any solution?
Thank very much.
You can derive from QPushButton and draw text yourself via QPainter in paintEvent.
As s workaround you can use a label or text document to print the text you want. You should paint it to a pixmap and use the pixmap on your button :
You can also find a rich text push button implementation here.
An other option is to use QxtPushButton class from libqxt.
QxtPushButton
widget is an extended QPushButton with rotation and rich text support.There is a bug report about this. When you use
QTextDocument::drawContents
, it tends to ignore the aligments. To make it work, set the text width usingQTextDocument::setTextWidth
.