C++ QPushButton中的双色文本
我需要一个文本中有两种颜色的QPushButton。我在QTextDocument中找到了一个带有html代码的解决方案,它正在运行。但我需要中心对齐,html代码无法工作C++ QPushButton中的双色文本,c++,qt,qt4,qpushbutton,qtextdocument,C++,Qt,Qt4,Qpushbutton,Qtextdocument,我需要一个文本中有两种颜色的QPushButton。我在QTextDocument中找到了一个带有html代码的解决方案,它正在运行。但我需要中心对齐,html代码无法工作 QTextDocument Text; Text.setHtml("<p align=center><font>Button</font><br/><font color=yellow>1</font></p>"); QPixm
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());
qtext文档文本;
setHtml(“按钮
1
”;
QPixmap pixmap(Text.size().width(),Text.size().height());
pixmap.fill(Qt::透明);
QPainter painter(油漆工)和pixmap;
Text.drawContents(&painter,pixmap.rect());
QIcon按钮(pixmap);
ui->toolButton->setText(“”);
用户界面->工具按钮->设置图标(按钮图标);
ui->toolButton->setIconSize(pixmap.rect().size());
我得到
同样的HTML代码在QLabel中工作
ui->label->setText("<p align=center><font>Label</font><br/><font color=yellow>1</font></p>");
ui->label->setText(label
1
”;
有解决办法吗
非常感谢。作为解决方案,您可以使用标签或文本文档打印所需的文本。您应该将其绘制到pixmap并使用按钮上的pixmap:
QPushButton *button = new QPushButton(this);
QTextDocument Text;
Text.setHtml("<h2><i>Hello</i> ""<font color=red>Qt!</font></h2>");
QPixmap pixmap(Text.size().width(), Text.size().height());
pixmap.fill( Qt::transparent );
QPainter painter( &pixmap );
Text.drawContents(&painter, pixmap.rect());
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
QPushButton*按钮=新的QPushButton(此按钮);
QTextDocument文本;
setHtml(“Hello”“Qt!”);
QPixmap pixmap(Text.size().width(),Text.size().height());
pixmap.fill(Qt::透明);
QPainter painter(油漆工)和pixmap;
Text.drawContents(&painter,pixmap.rect());
QIcon按钮(pixmap);
按钮->设置图标(按钮图标);
按钮->设置图标大小(pixmap.rect().size());
您还可以找到一个富文本按钮实现
另一个选项是使用libqxt中的类QXTButton
小部件是一个扩展的QPushButton,具有旋转和富文本支持。关于这一点,有很多建议。使用时,它往往会忽略对齐。要使其正常工作,请使用设置文本宽度
qtextdock;
doc.setHtml(“按钮
1
”;
doc.setTextWidth(doc.size().width());
QPixmap pixmap(doc.size().width(),doc.size().height());
pixmap.fill(Qt::透明);
QPainter painter(油漆工)和pixmap;
图纸内容(和油漆工);
QPushButton按钮;
setIconSize(pixmap.size());
按钮。设置图标(pixmap);
按钮。显示();
您可以从QPushButton派生并通过paintEvent中的QPainter自己绘制文本
class Button : public QPushButton
{
Q_OBJECT
public:
Button(QWidget *parent = 0)
: QPushButton(parent)
{ }
void paintEvent(QPaintEvent *p)
{
QPushButton::paintEvent(p);
QPainter paint(this);
paint.drawText(QPoint(10,10),"Hello");
}
};
在QtCreator中,转到“设计”模式,转到“属性”子视图,然后向下滚动,您可以在其中的某个位置更改对齐方式确定,然后重试:
按钮仍然存在相同的问题?谢谢,但该解决方案也不起作用。同样的代码在QLabel中工作得很好:(
class Button : public QPushButton
{
Q_OBJECT
public:
Button(QWidget *parent = 0)
: QPushButton(parent)
{ }
void paintEvent(QPaintEvent *p)
{
QPushButton::paintEvent(p);
QPainter paint(this);
paint.drawText(QPoint(10,10),"Hello");
}
};