问题标签 [qfontmetrics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
597 浏览

qt - QGraphicsView::drawForeground 上的 drawText

我的代码如下。

结果图像

QfontMetrics 似乎没有返回正确的大小。我的代码有什么问题?

我不知道该怎么办了。

QFontMetrics 返回附加图像的白色矩形的大小,但实际的 Text 被绘制得很小。

0 投票
1 回答
422 浏览

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

我有一个QString我可以得到的谁的像素长度,我也可以有一个来自by 的QFontmetrics::width()字符长度,但在这里我打算削减特定数量的像素。QStringQString::length()QString

有没有办法QString通过给出像素大小来获得子字符串?

谢谢!

0 投票
1 回答
582 浏览

c++ - windows和Linux中字体渲染的区别,Qt Cpp


我有,
QFontMetrics m_fm(QFont("Arial",14));
m_fm.width("来自项目网络的现有 LAN IP 地址");
返回'297'(在windows上)
谁能告诉我它在linux编译器上返回什么?
如果它在 linux 上有所不同,那为什么会这样呢?
以及我们如何在 Windows 和 linux 上进行相同的字体渲染。

更新:
我有一个 QTableView 单元格,我在其中共同写入来自多个字符串的数据
,我必须在单行中显示 2 行中的数据。(使用 .append("\n"))。
假设列宽是 140,
所以我需要数据以适合单行的 140 像素
因此,我需要像素宽度小于 140 的数据,以便
它可以正确显示。在这种情况下,根据字体(Arial)
,我正在计算
m_fm.width("Existing LAN IP Address from Project Network");
但它在 Linux 中有所不同,因为 windows Arial 字体不可用。
是否有机会在 Linux 系统中不安装 Arial 字体的情况下 获得正确的像素宽度?
提前致谢 !

0 投票
1 回答
331 浏览

qt - QFontMetrics 给出等宽字体的奇怪结果

有人可以向我解释这个测试程序的结果吗?

用 Qt5.11 编译这段代码后,我得到了这样的结果:

这种等宽字体的一个字符“W”的大小是 11。我希望由 8 个这样的字符组成的字符串的大小应该是 88。但是 QFontmetrics::width 返回 92!

0 投票
1 回答
140 浏览

qt - 为什么 QFontMetrics 提供的宽度与 Qml Rectangle/Text 显示的宽度不匹配

我编写了一个 qml 和 cpp 文件来验证和可视化 QFontMetrics 概念。

main.qml 文件

当我运行这个程序时,QFontMetrics 提供的宽度是:694。但是,在 qml 文件中为 Rectangle 和 Text 设置的宽度是 642,并且也设置了 elide 属性。有了这个逻辑(如 694 > 642),我应该会看到截断。但没有看到截断。

请参考 qml 输出

为什么是这样?无法理解。

0 投票
1 回答
78 浏览

qt - Qt/ Qml Frobihser 字体在 Linux 和 Windows 环境中的行为不同

我编写了一个 qtquickapplication 示例程序来在给定的矩形内显示文本“无”。矩形边框颜色设置为红色以可视化文本“无”是否在给定的宽度和高度内正确拟合。

我分别为 Windows 和 Linux 环境编译了相同的程序。我被奇怪的行为困住了。

使用相同的代码和字体(Frobisher),文本“none”在矩形边界内正确拟合,但在 Windows 环境中被截断。

这是什么原因?为什么字体的行为不同?我错过了什么吗?

Qt Linux 环境输出 Qt Windows 环境输出

主文件

main.qml

0 投票
2 回答
360 浏览

qt - Qt在boundingRect中包装文本

我正在用 PyQt 编写一个应用程序,我需要包装我正在绘制的文本。我使用类的boundingRect方法QFontMetrics来定义大小然后QPainter.drawText进行绘制。我需要文本适合给定的矩形。这是我使用的行:

但是,由于 flag Qt.TextWordWrap,如果文本没有任何空格,则它不会换行并且不适合矩形。我试过Qt.TextWrapAnywhere了,但即使有空格,这也会把单词分开。Qt.TextFlag似乎没有任何标志,优先考虑包装单词,并且只有在不可能的情况下才会将单词分开,例如QTextOption.WrapAtWordBoundaryOrAnywhere. 有没有办法使用boundingRectand来包装这样的文本drawText