如何使用 QPainter 渲染 QStringView?

How to render QStringView using QPainter?

我正在实现一个自定义文本布局引擎,我需要呈现很多 QStringView。但是 QPainterdrawText 重载只接受 QString。将所有这些 QStringViews 转换为 QStrings 只是为了绘制它们是非常低效的,并且有点违背了首先使用字符串视图的目的。

有没有办法避免为了使用 drawText 功能而实例化许多 QString?也许有办法创建一个“假”QString?或者也许有一个较低级别的(但仍然是跨平台的)文本绘制方法? 谢谢!

我还没有找到专门为此目的使用 QStringView 的方法。

但是,我确实找到了一种创建 QString 的方法,同时避免了昂贵的复制。

QString 有一个名为 fromRawData 的静态方法,它允许从预先存在的指针和长度创建 QString。用这个方法,好像可以避免复制了。

以下是此方法的说明:

它对我的情况很有效,但我必须承认我没有分析生成的代码并依赖文档中的信息。请自行查看。