終于終于找到 qt 正确的計算字元串所需寬高方法了,網上現有的都有弊端
我想要的是給定寬度計算出字元串所需高度,在計算時先保證單詞完整性,如果單詞整個寬度超出給定寬度,再進行任意位置換行,再計算高度。QFontMetrics 隻能二選一
一般方法:
QFontMetrics fm(this->font());
QRect rect(0, 0, w, this->height());
QRect rt = fm.boundingRect(rect, Qt::AlignCenter | Qt::TextSingleLine, "simple"); //
高配方法:
QTextOption toption(Qt::AlignCenter);
toption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
QRect rect = option.rect;
rect.setHeight(500);
rect = painter->boundingRect(rect, "I am the king of the world", toption).toRect();
這樣計算的有一下好處先按照完整單詞計算,如果整個單詞寬度大于指定寬度則強制對單詞截斷換行