簡體   English   中英

通過Qt cpp中的像素獲取QString的子字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM