Qt实用技巧:多QLabel不规则间距像素对齐文本方式实现

若该文为原创文章,转载请注明原文出处

本文章博客地址:https://hpzwl.blog.csdn.net/article/details/160153038

红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...

Qt开发专栏:实用技巧

需求

需要对齐。

提出这个问题是有多个文本,文字字数完全不同,不可以通过空格来实现了(空格对不齐)的情况。

实现方式1(通过富文本实现,失败)

通过富文本加上字符串解析的形式实现:

通过span,p,text都无效。

实现方式2:通过font

为了实现,将引号拆开,然后其他实现:

代码通过font控制间距+右侧的字体来实现文本(因为每个字都会受字符宽度影响,导致靠右边也会变化,所以最右边的字也是固化的)

最右侧的字和冒号构成一个QLabel。

实现代码如下:

cpp 复制代码
QFrame *pFrame = new QFrame(parent);
pFrame->setGeometry(x, y, 182, 32);
{
    // 名称
    {
        QLabel *pLabel = new QLabel(pFrame);
        pLabel->setGeometry(0, 0, 150 - 40, 32);
        // 组合字符串
        QFont font = pLabel->font();
        font.setLetterSpacing(QFont::AbsoluteSpacing, space);
        pLabel->setFont(font);
        pLabel->setText(name.left(name.size() - 1));
        pLabel->setAlignment(Qt::AlignVCenter | Qt::AlignRight);
        pLabel->setStyleSheet("color: #FFFFFF; "
                              "font-size: 21px;"
                              "font-family: \"Source Han Sans CN\";");
        ShadowEffectManager::setShadowEffectManager(pLabel);
    }
    // 冒号
    {
        QLabel *pLabel = new QLabel(pFrame);
        pLabel->setGeometry(150 - 40, 0, 40, 32);
        // 组合字符串
        pLabel->setText(QSTRING("%1:").arg(name.right(1)));
        pLabel->setAlignment(Qt::AlignVCenter | Qt::AlignLeft);
        pLabel->setStyleSheet("color: #FFFFFF; "
                              "font-size: 21px;"
                              "font-family: \"Source Han Sans CN\";");
        ShadowEffectManager::setShadowEffectManager(pLabel);
    }
    // 灯
    {
        QLabel *pLabel = new QLabel(pFrame);
        pLabel->setGeometry(150, 0, 32, 32);
        pLabel->setText("");
        pLabel->setStyleSheet("border-image: url(:/homeWidget/images/red.png);");
        *ppLabelLed = pLabel;
    }
}

本文章博客地址:https://hpzwl.blog.csdn.net/article/details/160153038

相关推荐
码云数智-园园2 小时前
Go并发编程避坑指南:如何彻底消灭数据竞争(Data Race)
开发语言
Mem0rin2 小时前
[Java/数据结构]树的基本概念、二叉树的创建和遍历
java·开发语言·数据结构
我不是懒洋洋2 小时前
【经典题目】链表OJ(轮转数组、返回倒数第k个节点、链表的回文结构)
c语言·开发语言·数据结构·算法·链表·visual studio
Lyyaoo.2 小时前
【JAVA基础面经】CAS 与 ABA
java·开发语言
Allen_LVyingbo2 小时前
《狄拉克符号法50讲》习题与解析(上)
开发语言·人工智能·python·数学建模·量子计算
charlie1145141912 小时前
通用GUI编程技术——图形渲染实战(三十)——Direct2D几何体系统:从路径到命中测试
开发语言·c++·windows·信息可视化·c·图形渲染·win32
Ava的硅谷新视界2 小时前
SQLite WAL 模式踩坑笔记:高并发读写下的几个细节
开发语言·后端·编程
huanmieyaoseng10032 小时前
Mybatis常见面试题
java·开发语言·mybatis
xiaoye-duck2 小时前
【C++:C++11】核心进阶:C++11引用折叠、完美转发与可变参数模板实战详解
开发语言·c++·c++11