【Qt 常用控件】显示类控件——QLabel

ops/2025/1/23 23:11:03/

目录

1.QLabel

1.1 textFormat 文本类型

普通文本和富文本

Markdown格式

1.2 alignment 文本对齐方式

1.3 wordWrap 自动换行

1.4 indent 文本缩进

1.5 margin 边距

1.6 buddy,qlabel伙伴

 1.7 pixmap图片 和 scaledContents自动填充


1.QLabel

功能:显示图片和文本

属性:
 

textQLabel中的文本。
textFormat

文本格式

Qt::PlainText :纯文本

Qt::RichText: 富文本、支持html标签

Qt::MarkdownText:markdown格式

Qt::AutoText:根据文本内容自动分析文本格式

pixmap设置QLabel内部包含的图片。
scaledContents

label内部图片 是否自动拉伸填充。

alignment

文本对齐方式(水平/垂直居中对齐,左/右/上/下 对齐)

wordWrap

自动换行

文本长度超出Label显示范围,是否自动换行。

如果不自动换行,文本不能完全显示。

QLabel不提供滚动条,QTextEdit(多行编辑框)提供滚动条拖拽。

indent

设置文本缩进。设置后,对label内的所有行都缩进,不只是首行缩进。

水平方向和垂直方向都生效。

而indent最多只是两个方向有效(具体哪两个⽅向有效取决于alignment对齐方式)。

margin

内部⽂本和边框之间的边距。

不同于于indent文本缩进。

是上下左右四个方向都同时有效。

openExternalLinks

是否允许打开⼀个外部的链接.

(当QLabel⽂本内容包含url的时候涉及到)

buddy

给QLabel关联⼀个"伙伴"

这样点击QLabel时就能激活对应的伙伴

例如伙伴如果是⼀个QCheckBox

那么该QCheckBox就会被选中

1.1 textFormat 文本类型

文本格式

Qt::PlainText :纯文本

Qt::RichText: 富文本、支持html标签

Qt::MarkdownText:markdown格式

Qt::AutoText:根据文本内容自动分析文本格式

例:为label标签,设置不同的文本类型

观察<b>标签的对文本的修饰效果,和#在markdown类型中的显示效果

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label_plaintext->setTextFormat(Qt::PlainText);ui->label_plaintext->setText("<b>纯文本</b>");ui->label_richtext->setTextFormat(Qt::RichText);ui->label_richtext->setText("<b>富文本</b>");ui->label_markdown->setTextFormat(Qt::MarkdownText);ui->label_markdown->setText("# 带标题符的markdown");}Widget::~Widget()
{delete ui;
}

普通文本和富文本

1. 普通文本

仅由字符(字母、数字、标点符号等)组成,是最基本的文字信息载体。

2. 富文本

使用word工具编辑的文件、就可以认为是富文本

富文本除了文字外,还包含多种格式和多媒体元素。

在格式方面,可以有不同的字体、字号、字体颜色、加粗、倾斜、下划线等样式,

还能设置段落格式,如缩进、行距等。

并且可以插入多媒体元素,像图片、视频、音频,以及超链接、表格、图表等。

Markdown格式

Markdown是一种轻量级的「标记语言」,提供各种特殊符号,表示不同的样式/格式。

  • #表示标题

  • 设置文本样式的符号:

1.2 alignment 文本对齐方式

  • Qt::AlignLeft:左对齐。
  • Qt::AlignRight:右对齐。
  • Qt::AlignTop:顶部对齐
  • Qt::AlignBottom:底部对齐。

  • Qt::AlignVCenter:垂直居中。
  • Qt::AlignHCenter:水平居中
  • Qt::AlignCenter:水平和垂直都居中。
    ui->label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);//水平居中 |垂直居中

1.3 wordWrap 自动换行

wordWrap 自动换行:文本长度超出Label显示范围,是否自动换行。

如果不自动换行,文本不能完全显示。

QLabel不提供滚动条,QTextEdit(多行编辑框)提供滚动条拖拽。

 //自动换行ui->label_2->setText("长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长");ui->label_2->setWordWrap(true);

1.4 indent 文本缩进

    //intdent文本缩进ui->label_3->setText("长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长");ui->label_3->setIndent(50);ui->label_3->setWordWrap(true);

1.5 margin 边距

    ui->label_3->setText("长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长");ui->label_3->setIndent(50);//缩进50ui->label_3->setWordWrap(true);//自动换行ui->label_3->setMargin(50);//边距50

边距效果:设置label内上下左右空白部分的距离(边距),只有内部矩形部分能显示文本。

未设置边距的时:

设置边距后:

超出中间矩形区域的部分,不显示。

边距与缩进:

 有边距、有缩进

有边距、无缩进

缩进是,在边距的基础上,再缩进。

1.6 buddy,qlabel伙伴

给QLabel关联⼀个"伙伴",这样点击QLabel时就能激活对应的伙伴。

例如伙伴如果是⼀个按钮(单选或复选按钮),按下快捷键,按钮会被选中。

绑定伙伴关系后,利用QLabel文本中的&符,为伙伴设置快捷键。

快捷键为:alt+指定字符。该字符label文本中&符,后的第一个字符。

    ui->label->setBuddy(ui->radioButton);ui->label_2->setBuddy(ui->radioButton_2);

1.7 pixmap图片 和 scaledContents自动填充

此时图片自动拉伸,铺满label:

重写resizeEvent虚函数,实现拖拽改变窗口大小的同时,改变QLabel的大小

可当窗口大小发生改变时,QLabel大小并不会随之变化:

  • 原因:为QLabel设置大小,是在widget的构造函数中设置的,设置就只设置了这一次
  • 虽然已经设置了label内的图片自动填充,可是label大小并没有改变,填充也没用。

Qt中表示用户操作的两类概念:信号、事件。

当拖拽修改窗口大小时,会触发resize事件。

resize这种事件,是一个连续的过程(从a一点点到b的过程),就会触发一系列的resize事件。

每触发一次resizeEvent事件,都会调用一次对应的虚函数。

  • 解决方法:重写QWidget的resizeEvent虚函数。
  • 原理:多态调用,实际会调用到子类Widget重写的虚函数。

回调函数设置方法

1.函数指针

2.函数对象

3.lambda

4.重写父类虚函数(框架内部拿着父类指针、调用虚函数(只要传参传的子类对象地址,就会实现多态调用))

5.Qt的信号槽

void Widget::resizeEvent(QResizeEvent* event)
{qDebug()<< event->size();ui->label->setGeometry(0,0,event->size().width(),event->size().height());
}


http://www.ppmy.cn/ops/152588.html

相关文章

游戏引擎学习第80天

Blackboard&#xff1a;增强碰撞循环&#xff0c;循环遍历两种类型的 t 值 计划对现有的碰撞检测循环进行修改&#xff0c;以便实现一些新的功能。具体来说&#xff0c;是希望处理在游戏中定义可行走区域和地面的一些实体。尽管这是一个2D游戏&#xff0c;目标是构建一些更丰富…

Numpy基础01(Jupyter基本用法/Ndarray创建与基本操作)

内容一&#xff1a;Jupyter开发环境 IPython 是一个增强型的 Python 交互式解释器&#xff0c;提供了自动补全、命令历史、魔法命令等功能。它支持与操作系统命令交互、内联绘图和多语言扩展&#xff0c;并可与 Jupyter Notebook 集成&#xff0c;适用于数据分析和科学计算。IP…

从零安装 LLaMA-Factory 微调 Qwen 大模型成功及所有的坑

文章目录 从零安装 LLaMA-Factory 微调 Qwen 大模型成功及所有的坑一 参考二 安装三 启动准备大模型文件 四 数据集&#xff08;关键&#xff09;&#xff01;4.1 Alapaca格式4.2 sharegpt4.3 在 dataset_info.json 中注册4.4 官方 alpaca_zh_demo 例子 999条数据, 本机微调 5分…

VIT论文阅读与理解

transform网络结构 vision transform网络结构 图1&#xff1a;模型概述。我们将图像分割成固定大小的补丁&#xff0c;线性嵌入每个补丁&#xff0c;添加位置嵌入&#xff0c;并将结果向量序列馈送到标准Transformer编码器。为了执行分类&#xff0c;我们使用标准方法向序列中添…

Grafana系列之Dashboard:新增仪表板、新增变量、过滤变量、变量查询、导入仪表板、变量联动、Grafana Alert

概述 关于Prometheus和Grafana的安装&#xff0c;略过。 写在前面 Dashboard&#xff1a;仪表板&#xff0c;可包含多个PanelPanel&#xff1a;面板&#xff0c;Dashboard中的组件 如有写得不对的地方&#xff0c;烦请指出。 新增仪表板 点击右上角的 选择New dashboard…

从零到一:Spring Boot 与 RocketMQ 的完美集成指南

1.Rocket的概念与原理 RocketMQ 是一款由阿里巴巴开源的分布式消息中间件&#xff0c;最初用于支持阿里巴巴的海量业务。它基于发布-订阅模型&#xff0c;具备高吞吐、低延迟、高可用和强一致性的特点&#xff0c;适用于消息队列、大规模数据流处理等场景。以下是对 RocketMQ …

如何为64位LabVIEW配置正确的驱动程序

在安装 64位 LabVIEW 后&#xff0c;确保驱动程序正确配置是关键。如果您首先安装了 32位 LabVIEW 和相关驱动&#xff0c;然后安装了 64位 LabVIEW&#xff0c;需要确保为 64位 LabVIEW 安装和配置适当的驱动程序&#xff0c;才能正常访问硬件设备。以下是详细步骤&#xff1a…

【odoo】Odoo 中的 Controllers 介绍与示例

在 Odoo 中&#xff0c;controllers 是一种用来处理 HTTP 请求的机制。它是 Odoo 中 Web 模块的重要组成部分&#xff0c;主要用于接收前端的 HTTP 请求、进行业务处理&#xff0c;然后返回响应。controllers 是 Odoo 和外部世界&#xff08;如前端页面、API 客户端等&#xff…