如何在Qt中获取drawItemText的结束位置
我试图通过子类化QPUshButton并覆盖paintEvent来定制QPUshButton。我正在写文本,后面是图标,如下所示:如何在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
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。非常感谢。是的,我需要检查组合是否居中。斯蒂芬:谢谢。我用它来计算矩形,加上图像的宽度,找到组合的起点。