如何在Qt中获取drawItemText的结束位置

如何在Qt中获取drawItemText的结束位置,qt,qpainter,Qt,Qpainter,我试图通过子类化QPUshButton并覆盖paintEvent来定制QPUshButton。我正在写文本,后面是图标,如下所示: paintEvent(QPaintEvent *paint) { QStyleOption opt; opt.init(this); QPainter p(this); //Draw the base style()->drawPrimitive(QStyle::P

我试图通过子类化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完成的位置?

将告诉您文本的宽度。它不知道您的矩形,因此您必须自己进行对齐计算。

将告诉您文本将在给定矩形、字体规格和对齐方式下放置在何处。

+1不知道这一点。现在由OP来决定哪一个看起来更好:)我认为一个完全居中的文本与一侧的图标不平衡,在某种程度上看起来有点奇怪,需要移离中心。@PavelZdenek。非常感谢。是的,我需要检查组合是否居中。斯蒂芬:谢谢。我用它来计算矩形,加上图像的宽度,找到组合的起点。