回复: Qt 怎样使字体随着外围矩形大小的改变而改变?
#6 回 5楼(sbtree) 的帖子 [lclflash 07-16 16:02]
十分感谢楼上回答!!!
但是我按着你的方法做的时候,运行结果不太正确 我的代码是这样的,请帮我看看是那的问题
if(m_Rect.height()>0)///m_Rect 是文本的外围矩形
{
textfont.setPixelSize(m_Rect.height());
QFontMetricsF fm2(textfont);
qreal fontwidth = fm2.width(QObject::tr("默认文本"));
qreal temp = m_Rect.width()/fontwidth ;
qreal stretch = textfont.stretch();
temp = temp * stretch ;
textfont.setStretch(temp);
}
#7 [sbtree 07-16 17:45]
QFontMetricsF fm1(textfont);
qreal hRatio(m_rect.height() / m_originalRect.height()), wRatio(1.0); //高度变化比例和宽度变化比例
if(textfont.pixelSize() > 0) textfont.setPixelSize(textfont.pixelSize() * hRatio);
else if(textfont.pointSizeF() > 0) textfont.setPointSizeF(textfont.pointSizeF() * hRatio);
else if(textfont.pointSize() > 0) textfont.setPointSize(textfont.pointSize() * hRatio);
QFontMetricsF fm2(textfont);
wRatio = fm1.width(text) / fm2.width(text);
textfont.setStretch(wRatio * textfont.stretch());
gsti->setFont(textfont);
#8 回 7楼(sbtree) 的帖子 [lclflash 07-17 12:41]
十分感谢!!!
#9 回 6楼(lclflash) 的帖子 [lclflash 07-17 15:20]
我试过了,还是不行 问题是当字体大小超过86时setStretch函数就不起作用了,我点阵字体跟矢量字体都试过了,不知道怎么回事。
#10 Re:回 6楼(lclflash) 的帖子 [sbtree 07-19 05:42]
引用第9楼lclflash于2010-07-17 15:20发表的 回 6楼(lclflash) 的帖子 :
我试过了,还是不行 问题是当字体大小超过86时setStretch函数就不起作用了,我点阵字体跟矢量字体都试过了,不知道怎么回事。
你这人看贴不仔细,我在3楼的回复就提醒你了
另外void QFont::setStretch ( int factor ) 可以只拉伸宽度,可以将原字体最小缩小到百分之一,最大到40倍