6

テキストに 2 色の QPushButton が必要です。QTextDocument で html コードを使用したソリューションを見つけましたが、それは機能しています。しかし、中央揃えが必要で、html コードが機能していません。

 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());

そして、私は得る、ここに画像の説明を入力

同じコード HTML が QLabel で機能しています

ui->label->setText("<p align=center><font>Label</font><br/><font color=yellow>1</font></p>");

ここに画像の説明を入力

解決策はありますか?

ありがとうございました。

4

3 に答える 3

4

回避策として、ラベルまたはテキスト ドキュメントを使用して、必要なテキストを印刷できます。それをピックスマップにペイントし、ボタンでピックスマップを使用する必要があります。

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());

リッチ テキスト プッシュ ボタンの実装もここで見つけることができます。

もう 1 つのオプションは、 libqxt のQxtPushButtonクラスを使用することです。QxtPushButtonウィジェットは、回転とリッチ テキストをサポートする拡張 QPushButton です。

于 2014-11-11T07:09:15.610 に答える
3

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");
    }
};
于 2014-11-12T14:31:57.433 に答える