问题标签 [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 回答
1108 浏览

qt - QTextEdit 显示宽度与文本宽度

我正在 Qt 中创建一个“滚动文本”类,使用一个QTextEdit(只读,无滚动条,moveCursor)和一个QTimer- 简单且有效。

我的问题是发送给班级的文本比 QTextEdit-box 短(窄)。傻,我同意,但是,作为 Qt 的新手,我没有找到一种简单的方法来比较给定文本的宽度(取决于字体)和可以在其中显示的实际宽度QTextEdit(在计算 FrameStyle 之后, ETC。)。我想我需要计算像素。

有任何想法吗?谢谢

0 投票
0 回答
547 浏览

qt - 为什么 QFontMetrics::boundingRect() 返回错误大小的矩形?

我正在使用 Qt4.7。当我在某些情况下使用 QFontMetrics 呈现我的文本时,我得到了错误的宽度。我的代码是这样的:

我发现 fm.boundingRect(str) 在 dpi 更改时总是返回一个固定的矩形。

0 投票
1 回答
2568 浏览

qt - 使用 QPainter 的 drawText() 绘制时垂直居中文本

在图像上居中文本时,我的策略是获取该文本的边界矩形并将宽度或高度除以二。在这种情况下,我也做了同样的事情。这是我创建的示例:

这是结果 - 文本位于行下方,而不是居中:

安卓:
图片说明
Windows:
图片说明

我使用线条根据度量矩形在文本周围绘制框架:

图片说明

预期结果是将可见文本准确地围绕给定点/线居中:

图片说明

为了让您正确看待,这是我遇到的实际
图片说明
问题: 数字应该在行的中间,而不是在下面。

我正在使用的函数返回大小,包括重音符号和其他不存在的大字符。如何仅针对存在的字符获取以像素为单位的矩形?

0 投票
0 回答
35 浏览

qt - 根据窗口高度调整字体 pointSize

我可以选择更改标签上的文本字体大小,现在没有 layout 。如何根据父窗口调整大小的高度更改文本的字体 pointSize。所以我如何计算增加的​​高度因子,并基于这个因子我可以乘以我的 pointSize 字体。

0 投票
1 回答
635 浏览

c++ - QFontMetrics boundingRect

我遇到了 QFontMetrics 'boundingRect' 函数的问题,它没有返回正确的结果。

在调试器中,rctLine 包含:

这非常令人困惑,我希望 x1 和 y1 都为 0,因为没有传递参考位置,我希望 x2 和 y2 都是正数。

返回的矩形不正确,如果我将它与 drawText 和对齐一起使用,则显示中缺少部分字符串。

我知道还有其他关于此函数如何返回错误结果的帖子,我已经看过这些帖子,但它们对我没有帮助。

我在 RedHat 7.2 上使用 Qt5.6。

我也试过:

其中 pobjParent 是父小部件, rctParent 包含:

intAlign 包含 33(左,上)

在这种情况下,rctLine 返回:

但是边界矩形仍然很小,渲染时缺少部分“S”。

QFontMetrics 上的官方 Qt 文档

0 投票
2 回答
1334 浏览

qt - 在 QFont 中查找文本宽度

我的树模型中有两个项目我的文本对齐方式差异很小。这是由文本的宽度引起的,但我使用 QFontMetrics::width() 检查了文本的宽度,但两个文本都是相同的。

文本1:111601756
文本2:999999996

从图像中您可以看到第二个文本中存在轻微的对齐问题。

在此处输入图像描述

这是我尝试过的示例代码:-

输出:

宽度 1 153

宽度 2 153

MyDelegate 绘画功能:-

现在的问题是绘制发生在错误的区域,因为从图像中您可以看到数据被绘制在根项的顶部。任何线索我在这里缺少什么。

新输出:

在此处输入图像描述

0 投票
1 回答
99 浏览

c++ - Qt 打印 - QFontMetrics 类

我是 Qt 新手,正在探索 QPrinter / QPainter

根据文档,为了以毫米为单位打印,考虑到它的分辨率,坐标必须转换为打印机的单位。所以,我写了以下代码:

这适用于打印线等。

现在我必须测量文本,所以根据文档我使用了 QFontMetrics() 类。

Painter->fontMetrics().width(stringToMeasure)根据文档,问题在于以像素为单位返回宽度。我怎样才能把它翻译成mm?

任何帮助将不胜感激!

0 投票
1 回答
1362 浏览

qt - QFontMetrics 可以考虑 Windows dpi 缩放吗?

我的印象是,如果您在应用程序中执行此操作

然后字体在高分辨率显示器上自动放大。如果您在 Windows 10 中显式增加字体缩放(设置-->系统->自定义缩放),则相同。

但是,在 Windows 10 中以 100% 和 200% 缩放运行以下代码时,它不会返回两倍大小。

奇怪的是只有1个像素的差异。

这是为什么?我可以让 QFontMetrics 考虑 Windows 缩放吗?还是我需要使用逻辑/物理 DPI 来推断字体大小必须增加 2 倍?

谢谢

0 投票
1 回答
1270 浏览

c++ - 如何设置动态 QFont 大小?

我遇到了 QFontMetrics? http://doc.qt.io/qt-5/qfontmetrics.html
这给出了当前字体的高度和宽度。

我需要在使用 Scale 类的不同监视器上以全屏模式运行我的应用程序。http://doc.qt.io/qt-5/qml-qtquick-scale.html

这将返回当前屏幕的高度和宽度。

有没有办法使用 QFontMetrics 或其他任何东西来根据显示器大小更改字体大小?

Draw_on_qimage是一个cpp类。

0 投票
1 回答
286 浏览

c++ - 如何解释 QFontMetrics 结果?

我无法理解我从中获得的价值QFontMetrics

使用以下屏幕分辨率,我得到:

  1. ) 1920/1080: 256/16
  2. ) 3840/2160: 178/10 高 DPI 支持qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1")
  3. ) 3840/2160: 536/32 不支持高 DPI

我的理解是我确实得到了像素宽度/高度。我想知道为什么我在雇佣决议时会得到这么低的身高(见 2)。我宁愿期望它反过来 - 使用更多像素。

我可以看到,在 1 和 3 之间(几乎)有因子 2,这是有道理的。但是随后(使用 3,不支持 DPI)UI 不可读(由于高 DPI 屏幕太小)。那么2如何适应,这有一些奇怪的结果。

有人能对这些价值观的解释给出提示吗?

备注:与样式表/Qt Designer 对高 dpi 屏幕的支持有关吗?我试图找到的是我的 UI 窗口在不同分辨率/平台上的合理宽度/高度


好评论,我明白了。使用 1280/780 的“虚拟屏幕”,使用 hi-dpi Qt 以 1:3 的比例缩放。我想知道我是否可以手动调整像素比率。就我而言,它是通过设置发生的qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1")。是否有机会将其设置为 2:1?

  1. ) “桌面 w1920 w1080 - 比率:1 | 80 个字符:w560 h16 | 43 个字符:w256 h16”
  2. ) “桌面 w1280 w720 hi DPI 比率:3 | 80 个字符:w400 h10 | 43 个字符:w178 h10”
  3. ) “桌面 w3840 w2160 - 比率:1 | 80 个字符:w1200 h32 | 43 个字符:w536 h32”