问题描述
我正在实现一个自定义文本布局引擎,我需要渲染很多 QStringView
。但是 QPainter
的 drawText
重载只接受 QString
。将所有这些 QStringView
转换为 QString
只是为了绘制它们是非常低效的,并且有点违背了使用字符串视图的初衷。
有没有办法避免为了使用 QString
函数而初始化许多 drawText
?也许有一种方法可以创建“假”QString
?或者也许有一个较低级别(但仍然是跨平台)的文本绘制方法?
谢谢!
解决方法
我还没有找到专门为此目的使用 QStringView
的方法。
然而,我确实找到了一种方法来创建 QStrings,同时避免昂贵的复制。
QString 有一个名为 fromRawData
的静态方法,它允许从预先存在的指针和长度创建一个 QString。使用这种方法,似乎可以避免复制。
这里是这个方法的描述:
它对我的案例很有用,但是我必须承认我没有对结果代码进行概要分析,而是依赖于文档中的信息。请自行检查。