[英]Get Substring of QString by Pixels in Qt cpp
我有一個可以通過QFontmetrics::width()
獲得像素長度的QString
,也可以通過QString::length()
從QString
獲得字符長度,但是這里我打算將QString
切成特定數量的像素。
有沒有辦法通過給定像素大小從QString
子字符串?
謝謝!
是的,您可以使用QFontMetrics::elidedText
這樣做。 例如,要以200像素切割,請使用:
QString cutString = yourFontMetrics.elidedText(someString, Qt::ElideNone, 200);
第二個參數指示剪切模式( 此處有更多值)。
更新 :我不確定這是否是Qt中的一個錯誤(對我來說是Qt 5.10.0),但實際上Qt::ElideNone
返回的字符串相同。 解決方法:
QString cutString(const QString& str, const QFontMetrics& fm, int pixels)
{
const QChar ellipsis(0x2026);
if (fm.width(str) <= pixels) return str;
auto tmpStr = fm.elidedText(str, Qt::ElideRight, pixels + fm.width(ellipsis));
return tmpStr.left(tmpStr.length() - 1);
}
可以在此處找到一個完整的工作示例(您需要將文件添加到新的Qt項目中)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.