QFontMetrics、QLabe::paintEvent() 实现label自适应 text宽度, 并添加下划线,Qlabel中 字符串宽度获取

2023-10-26

参考: 实用QFontMetrics

QLabe 中字符串宽度获取

  //每个字符的宽度
    QFontMetrics fontMetrics(this->font());
    //字符串总宽度
    int textWidth = fontMetrics.width(m_text);

templet : QLabel 宽度适应文本宽度,并添加下划线

void ClickedLabel::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event)

    QPainter painter(this);
    QPen pen;

    //获取qlabel字体
    QFontMetrics fontMetrics(this->font());
    //字符串总宽度
    int textWidth = fontMetrics.width(m_text);
    //设置label大小
    this->setFixedSize(QSize(textWidth, 42));
    if (m_isOn) {
        pen.setColor(m_color);
        painter.setPen(pen);
        painter.drawText(rect(), Qt::AlignCenter, m_text);
        pen.setWidth(5);
        painter.setPen(pen);
        painter.drawLine(0, height(), width(), height());
    } else {
        pen.setColor(labBlack_085);
        painter.setPen(pen);
        painter.drawText(rect(), Qt::AlignCenter, m_text);
    }
}

QString elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags = 0)

如果字符串文本宽度大于宽度,则返回该字符串的省略版本(即,其中包含“…”的字符串)。否则,返回原始字符串。宽度以像素而不是字符为单位指定。

参数2是省略号位置:

Qt::ElideLeft:左
Qt::ElideRight:右
Qt::ElideMiddle:中
Qt::ElideNone:无省略号直接输出原字符。

QFont f;
f.setPixelSize(30);
f.setStretch(QFont::UltraExpanded);
QFontMetrics FontMetric1 = QFontMetrics(f);
qDebug()<<FontMetric1.elidedText("hello world",Qt::ElideLeft,200);
qDebug()<<FontMetric1.elidedText("hello world",Qt::ElideRight,200);
qDebug()<<FontMetric1.elidedText("hello world",Qt::ElideMiddle,200);
qDebug()<<FontMetric1.elidedText("hello world",Qt::ElideNone,200);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QFontMetrics、QLabe::paintEvent() 实现label自适应 text宽度, 并添加下划线,Qlabel中 字符串宽度获取 的相关文章

  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 在高 dpi Windows 平台上自动重新缩放应用程序?

    我正在编写一个需要在高 dpi Windows 192dpi 而不是 96dpi 上运行的 Qt 应用程序 不幸的是 Qt 框架尚不支持高 dpi 至少在 Windows 上 因此我的应用程序及其所有元素看起来只有应有尺寸的一半 有没有办法
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • MySQL适合与不适合建索引的情况

    适合建索引情况 主键自动建立唯一索引 频繁作为查询条件的字段应该创建索引 查询中与其它表关联的字段 外键关系建立索引 Where条件里用不到的字段不创建索引 单键 组合索引的选择问题 在高并发下倾向创建组合索引 查询中排序的字段 排序字段若
  • 三个例题教会你二分法

    二分法 二分法 例题 数组查找 错误版本号 插入位置 二分法 先看一个很有意思的段子 有一天小明到图书馆借了 N 本书 出图书馆的时候 警报响了 于是保安把小明拦下 要检查一下哪本书没有登记出借 小明正准备把每一本书在报警器下过一下 以找出
  • 【毕设选题】深度学习人体语义分割在弹幕防遮挡上的实现 - python

    文章目录 1 课题背景 2 技术原理和方法 2 1基本原理 2 2 技术选型和方法 3 实例分割 4 实现效果 5 最后 1 前言 深度学习人体语义分割在弹幕防遮挡上的应用 学长这里给一个题目综合评分 每项满分5分 难度系数 3分 工作量
  • ad取消覆铜_【学院推荐】PCB工程师不得不看:超级实用AD常用快捷键总结

    快捷键的实用 极大的提高了大家工作中的效率 因此小编我特意帮大家搜集整理很多关于AD方面的常用快捷键 希望对大家有所帮助 一 PCB中常用快捷键 R L 输出PCB中所有网络的布线长度 Ctrl 左键点击 对正在布的线完成自动布线连接 M
  • python之word文档生成

    python之word文档生成 python docx官方文档 python docx操作word文档 python文件读取操作 excel文件操作 python docx官方文档 Document objects python docx
  • angular html原理,angular数据双向绑定的原理是什么?

    Angular是通过脏检测来进行双向数据绑定 所谓的双向绑定 无非是从界面的操作能实时反映到数据 数据的变更能实时展现到界面 angular数据双向绑定的原理 页面中每绑定一个数据或者事件时 就会向 watch队列中加入一条 watch 当
  • 几款Android 应用自动化测试工具

    简述 本文介绍几款流行的 Android应用自动化测试工具 Monkey测试 随机测试 压力测试 运行在模拟器或实际设备中 MonkeyRunner测试 操作简单 可录制测试脚本 可视化操作 主要生成坐标的自动化操作 移植性不强 Robot
  • keil编译问题error C100: unprintable character... 和WARNING L16: UNCALLED SEGMENT...

    keil编译出现问题如下 问题 error C100 unprintable character 0xA3 skipped 原因 keil里面出现了中文输入法时写的标点 程序中不能出现全角的任何字符 包括空格在内的任何标点符号和空格都只能在
  • ant design pro v5 - 03 动态菜单 动态路由(配置路由 动态登录路由 登录菜单)

    1 动态菜单 技术思路 配置路由 用户登录后根据用户信息获取后台菜单 2 动态路由 动态菜单 技术思路 使用umijs的运行时修改路由 patchRoutes routes UMIJS 参考文档 react umi 没有守护路由的功能 直接
  • 如何进行容器镜像加速?

    容器相比虚拟机最突出的特点之一便是轻量化和快速启动 相比虚拟机动辄十几个 G 的镜像 容器镜像只包含应用以及应用所需的依赖库 所以可以做到几百 M 甚至更少 但即便如此 几十秒的镜像拉取还是在所难免 如果镜像更大 则耗费时间更长 我们团队
  • python中MySQLdb的execute和executemany的使用

    如果使用executemany对数据进行批量插入的话 要注意一下事项 conn MySQLdb connect host localhost user root passwd password db myDB charset utf8 cu
  • UncaughtExceptionHandler

    61 常见的Exception Type 1 EXC BAD ACCESS 在开发过程中 总是会遇到各种Exception 在此总结一些常见的Exception NSInvalidArgumentException 错误类型 NSInval
  • C++ STL std::copy 详解

    如果要把一个序列 sequence 拷贝到一个容器 container 中去 通常用std copy算法 代码如下 std copy start end std back inserter container 这里 start和end是输入
  • C# 五步完成Bmp文件流到AVI的转换

    近日因项目需要 从Android客户端发送过来的图像流既要能实时显示在picturebox中 还要求能够转自动录制成AVI文件 网上查了不少关于C 屏幕录制的文章 什么directshow之类的 用C 倒是很方便 C 还是过于麻烦了点 对于
  • msconfig蓝屏_在msconfig里修改了处理器数和最大内存后电脑无法启动一直蓝屏

    楼主你 很有才 没事改那玩样 你以为4核心就 是4个处理器了 也 从没听说过 天冷了 启动会很慢www mh456 com防采集 win10 上面那个老兄2113 我代码没成功 5261情况基本符合就是没成 懵 然后我开4102机按esc选
  • 后端实战教程:如何使用 Node.js 开发 RESTful API 接口(Node.js + Express + Sequelize + MySQL)

    使用 Node js 开发 RESTful API 接口 后端部分 node js Express Sequelize MySQL 后端部分 node js Express MySQL 后端部分 后端 node js 项目结构 安装 nod
  • 60道逻辑推理题及答案

    作者 billy 版权声明 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 前言 程序员面试题中经常会出现一些烧脑的逻辑题 博主觉得这种题目非常有趣 于是收集了一些分享给大家 1 假设有一个池塘 里面有无穷多的水 现有2
  • 学完python基础知识之后可以做些什么-学完python后再学什么

    本文收集整理关于学完python后再学什么的相关议题 使用内容导航快速到达 内容导航 Q1 Python学完还需要学什么才可以开发真正的应用软件 你说的c c mfc的关系 并不完全需要向你所说的先后顺序去学 只是说c语言属于面向过程的语言
  • F1.52 视频编码简介

    视频编解码的应用技术很复杂 涉及到的技术主要包括I P B帧技术 运动估计和运动补偿等 视频压缩编码过程一般分3个步骤 包括时间维 空间维及熵编码 视频解码是编码的逆过程 首先是时间维压缩 主要以参考帧的数据预测当前帧的数据 输出预测向量和
  • QFontMetrics、QLabe::paintEvent() 实现label自适应 text宽度, 并添加下划线,Qlabel中 字符串宽度获取

    参考 实用QFontMetrics QLabe 中字符串宽度获取 每个字符的宽度 QFontMetrics fontMetrics this gt font 字符串总宽度 int textWidth fontMetrics width m