gpt4 book ai didi

c++ - 在Qt cpp中按像素获取QString的子串

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:49 24 4
gpt4 key购买 nike

我有一个QString,它的像素长度可以通过QFontmetrics::width()获得,我也可以从QString获得字符长度通过 QString::length(),但我打算将 QString 剪切特定数量的像素。

有没有办法通过给定像素大小从 QString 中获得子字符串?

谢谢!

最佳答案

是的,您可以使用 QFontMetrics::elidedText这样做。例如,要以 200 像素切割,请使用:

QString cutString = yourFontMetrics.elidedText(someString, Qt::ElideNone, 200);

第二个参数表示cut模式(更多值here)。

更新:我不确定这是否是 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);
}

可以找到完整的工作示例 here (您需要将文件添加到新的 Qt 项目中)。

关于c++ - 在Qt cpp中按像素获取QString的子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51701467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com