序言

用QML做一个按钮时,有需求是要求只有底下一横,但是不能靠太近,而且长度要刚刚好和字的长度一致,正当我查也查不出来时,被某群的群友启发,知道有一个TextMetrics可以提供相应字体的长度,但是网上没有多少相关的文档,所以我来破这个瓜

一、TextMetrics的用处

TextMetrics可以提供在初始化时相应字体的长度,记住重点!是在初始化时的长度

二、TextMetrics的简单用法

一般来说,我只需要赋予TextMetrics 的font属性和text属性即可,这样就已经满足需求了,更多细则看Qt助手即可

TextMetrics {id: pageTextMetricsfont {family: "serif"pixelSize: 25}text: "交互指令"
}

如上,我给TextMetrics 赋予了一个 "serif"字体 25像素的字体格式(未设置的自动设为默认值),和相对应的“交互指令”,这样,我们就可以从中获取到四个字的实际代码长度了。

在使用时只需要这样调用其的width和height即可

ctx.beginPath()
ctx.moveTo( -pageTextMetrics.width / 2, 14)
ctx.lineTo( pageTextMetrics.width / 2, 14)
ctx.stroke()

记住:受控件实际缩放到界面,会导致实际长度有所变化,很可能会导致变化后的长度和代码的长度不一样,所以最好在代码里将其对齐就行。

综上,便得到了我设置的“交互指令”的长度了,至于我序言写的控件是怎么弄的,我只能说是用Canvas画出来的,要讲Canvas的话就未免太长了,我还没掌握好,加之我只是讲TextMetrics的用法,故此按下不表。

三、其余属性拓展

elide : enumeration:该属性的作用是,当实际文字长度超过赋予限制的文字长度elideWidth时,该TextMetrics的属性elidedText就会出现省略号,而出现的形式,则通过不同的枚举变量来显示

Qt::ElideNone - No eliding; this is the default value.
Qt::ElideLeft - For example: "...World"
Qt::ElideMiddle - For example: "He...ld"
Qt::ElideRight - For example: "Hello..."

elideWidth : real:与上者相搭配,赋予该属性,超过该宽度则会出现省略号

elidedText : string:这是呈现省略号时的text版本,比如说该属性保存的文本是"Hello…"

text : string:该属性保存用于度量的文本,如果已经赋予了值,可直接读取为实际的文本,即使超过了省略宽度,也不会出现上者一般的省略号修饰

未完待续…

Qt5.12 QML——TextMetrics字体长度的测量指标相关推荐

  1. Linux QT5.12 一种整体界面字体设置的方法及设置PlainTextEdit组件的字体大小方法

    1.在Linux QT5.12开发界面时,经常会涉及到界面字体大小的设置,默认字体一般比较小,解决方法如下: 在main函数中添加代码: //============================= ...

  2. QT:(2)Window10、VS15下安装qt5.12.8

    双击下载的qt5.12.8安装包,一步步安装即可. 1.注册和安装(用自己的邮箱注册设置一下密码,之后会收到邮件按照邮件中的网址激活一下即可) 1.1完成之后,跳到下一个界面,同意一下开源软件的条款, ...

  3. 全志T7/T507 Qt5.12.5移植记录

    1.概述 Qt5.12.5移植过程中遇到一些坑,特意记录下来. 主要包括编译.运行.环境配置三个部分. 2.编译配置 2.1.配置脚本 新建setenvs512.sh脚本,设置编译环境和选项,放入Qt ...

  4. QT实战2:QWT的安装和使用(qwt6.1.4,win10,QT5.12.3)

    QT实战2:QWT的安装和使用攻略(qwt6.1.4,win10,QT5.12.3) QWT,即Qt Widgets for Technical Applications,是一个基于LGPL版权协议的 ...

  5. 银河麒麟桌面操作系统v10安装QT5.12.8插件

    目录 0. 环境说明 1. 安装步骤 0. 环境说明 项目 版本 CPU 龙芯3A4000 操作系统 银河麒麟桌面操作系统v10(龙芯版) QT QT5.12.8(操作系统自带版本) 1. 安装步骤 ...

  6. 【Qt】在ubuntu14.04上安装Qt5.12(失败)

    注意 在ubuntu14.04上安装Qt5.12最终失败了,Qt5.12需要的libdbus库的版本和ubuntu14.04中的不一致,如果强行升级libdbus库版本,会导致系统桌面无法启动. 再次 ...

  7. C++ VS2017 QT5.12开发在xp环境下运行 [2019]亲测推荐

    项目是C++在vs2017+QT5.12写的,在win7,win8,win10运行无任何问题. (虽然XP已经被淘汰,但在中国至少还有6%的份额,尤其企业.研究所等.尝试此还是有意义的--) 但根据需 ...

  8. Qt5.12编译MySQl5.1.37驱动

    1. Qt使用mysql常见问题 在使用Qt连接mysql数据库的时候,遇到过这样的报错,做一下记录和总结. 报错如下: (1)QSqlDatabase: QMYSQL driver not load ...

  9. 【Qt】Qt5.12版本编译Oracle驱动教程

    00. 目录 文章目录 00. 目录 01. Qt5.12安装 02. Qt安装注意事项 03. Qt版本和Oracle安装路径说明 04. Qt5.12编译Oracle驱动(使用MinGW 64位) ...

最新文章

  1. forget word a out 1
  2. 内存溢出_容易造成单片机内存溢出的几个陷阱
  3. Codeforces 1004F Sonya and Bitwise OR (线段树)
  4. 【Markdown/typora】程序员写博客2分钟简单入门
  5. Linux命令行上执行操作,不退回命令行的解决方法
  6. mysql binlog2sql_mysql闪回工具binlog2sql安装配置教程详解
  7. css和JavaScript实现的星云动画效果
  8. [BZOJ1444]有趣的游戏(AC自动机+矩阵乘法)
  9. android网络动态获取权限,基于JetPack实现的权限动态获取
  10. Eclipse 4.16 稳定版发布
  11. centos打开 mysql数据库文件_centos安装mysql数据库和配置mysql数据库
  12. 2. Vue基础语法
  13. Layui数据表格动态禁用checkbox
  14. vasp程序对计算机的要求,OpenMPI环境下的VASP软件的并行与进程
  15. 市场营销案例分析PPT模板-朴尔PPT
  16. PDF中如何删除文字
  17. Android开发规范:资源文件命名规范
  18. Buffon投针试验【布丰】
  19. 需要u3d资源吗,免费送哦
  20. UVA-714(思维题)

热门文章

  1. NYOJ - 找点【贪心】
  2. Dell戴尔新版重装win10的系统步骤【注意事项】
  3. 8月AppStore最新社交App排名:soul第一,觅伊第十
  4. 2020iPS细胞研究进展综述
  5. Android实现仿有道云笔记头像背景(模糊效果)
  6. 前后端分离开发模式介绍
  7. CF1601E Phys Ed Online题解
  8. 中华瑰宝之山西人的面食
  9. SPLAYER中文字幕乱码
  10. k8s_day03_02