2

QPUshButtonをサブクラス化し、paintEventをオーバーライドすることで、QPUshButtonをカスタマイズしようとしています。私はテキストを書いています、そして以下のようにアイコンが続きます:

paintEvent(QPaintEvent *paint)
    {
         QStyleOption opt;
         opt.init(this);
         QPainter p(this);
        //Draw the base
         style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);

        //Draw the text
         style()->drawItemText(&p,this->rect(),Qt::AlignCenter,(this->palette()), true, this->text());

    //How do I make the image immediately follow the text

         if(!this->icon().isNull())
            //Draw the icon at 75% button height
            style()->drawItemPixmap(&p, this->rect(),Qt::AlignRight|Qt::AlignVCenter, this->icon().pixmap(this->rect().height()  * 0.75));

    }

テキストを中央揃えにし、アイコンを右揃えにします。ただし、これにより、テキストとアイコンの間にギャップが生じます。整列する代わりに、テキストの直後にアイコンを描画する方法はありますか?

つまり、drawItemTextが終了した位置を取得する方法はありますか?

4

2 に答える 2

2

QStyle :: itemTextRect()は、指定された長方形、フォントメトリック、および配置でテキストが配置される場所を示します。

于 2012-09-12T17:04:24.263 に答える
0

QFontMetricsは、テキストの幅を示します。長方形がわからないため、自分で配置計算を行う必要があります。

于 2012-09-12T15:31:59.097 に答える