008 Qt_显示类控件_QLabel

前言

本文将会向你介绍Qt中显示类控件QLabel的相关属性

Label

text QLabel 中的⽂本
textFormat ⽂本的格式.Qt::PlainText 纯⽂本,Qt::RichText 富⽂本(⽀持 html 标签)
pixmap QLabel 内部包含的图片.
scaledContent 设为 true 表⽰内容⾃动拉伸填充 QLabel设为 false 则不会⾃动拉伸
alignment 对齐方式.可以设置水平和垂直方向如何对齐
wordWrap 设为 true 内部的⽂本会⾃动换⾏.设为 false 则内部⽂本不会⾃动换行.
indent 设置⽂本缩进. 水平和垂直都生效
margin 内部⽂本和边框之间的边距.不同于于 indent, 但是是上下左右四个⽅向都同时有效.而 indent 最多只是两个方向有效(具体哪两个⽅向有效取决于 alignment )
openExternalLinks 是否允许打开⼀个外部的链接.(当 QLabel ⽂本内容包含 url 的时候涉及到)
buddy 给 QLabel 关联⼀个 "伙伴" , 这样点击 QLabel 时就能激活对应的伙伴.例如伙伴如果是⼀个 QCheckBox, 那么该 QCheckBox 就会被选中

示例一:纯文本、富文本、markdown文本

①创建三个label,给以足够大的尺寸

②编写widget.cpp文件,设置文本格式

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->label->setTextFormat(Qt::PlainText);
    ui->label->setText("这是一段纯文本");

    ui->label_2->setTextFormat(Qt::RichText);
    ui->label_2->setText("<b> 这是一段富文本 </b>");

    ui->label_3->setTextFormat(Qt::MarkdownText);
    ui->label_3->setText("## 这是一段 markdown 文本");

Widget::~Widget()
{
    delete ui;
}

③运行程序,观察到三个label中的文本格式不同

示例二:在label中显示图片

①在界面上创建一个label,objectname为label_image,并创建.qrc文件,导入图片资源

②编写widget.cpp文件

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"
#include <QResizeEvent>
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //设置label大小与窗口大小一般大
    ui->label_image->setGeometry(0, 0, 361, 341);
    QPixmap pixmap(":/image.png");
    ui->label_image->setPixmap(pixmap);
    // 设置内容伸缩
    ui->label_image->setScaledContents(true);

}

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

Widget::~Widget()
{
    delete ui;
}

③运行并观察结果

示例三: 演示文本对齐、自动换行、缩进、边距

①首先创建4个label,objectname从label到label_4,并修改QFrame中的frameShape为Box,这样会使边框看起来更加清晰


② 编写widget.cpp文件,给label赋予属性

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //设置文字居中对齐
    ui->label->setAlignment(Qt::AlignCenter | Qt::AlignVCenter);
    ui->label->setText("垂直水平居中的文本");

    //设置自动换行
    ui->label_2->setAlignment(Qt::AlignTop | Qt::AlignLeft);
    ui->label_2->setWordWrap(true);
    ui->label_2->setText("这是一个很长的文本这是一个很长的文本这是一个很长的文本这是一个很长的文本这是一个很长的文本");

    //设置首行缩进
    ui->label_3->setAlignment(Qt::AlignTop | Qt::AlignLeft);
    ui->label_3->setIndent(20);
    ui->label_3->setText("这是一个很长的文本这是一个很长的文本这是一个很长的文本这是一个很长的文本这是一个很长的文本");

    //设置边框
    ui->label_4->setAlignment(Qt::AlignTop | Qt::AlignLeft);
    ui->label_4->setMargin(20);
    ui->label_4->setText("这是一个很长的文本这是一个很长的文本这是一个很长的文本这是一个很长的文本这是一个很长的文本");
}

Widget::~Widget()
{
    delete ui;
}

③运行程序并观察结果

第⼀个 label 垂直水平居中

第⼆个 label 设置了 wordWrap, 能够⾃动换行

第三个 label 设置了 Indent, 左侧、上方和边框有间距. 右侧则没有.

第四个 label 设置了 margin, 四个方向均有间距

示例四:设置伙伴

① 创建两个label和两个radioButton,并把把 label 中的文本设置为 "快捷键 &A" 这样的形式,此时其中 & 后面跟着的字符, 就是快捷键,可以通过 alt + A 的方式来触发该快捷键,值得注意的是这里的快捷键和QpushButton控件的快捷键不同,这里需要搭配alt+单个字母的方式触发

②编写widget.cpp文件,并设置buddy属性

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //设置label的伙伴widget
    ui->label->setBuddy(ui->radioButton);
    ui->label_2->setBuddy(ui->radioButton_2);
}

Widget::~Widget()
{
    delete ui;
}

③运行程序,观察到按下alt + A便勾选了选项1

小结

今日的分享就到这里啦,如果本文存在疏漏或错误的地方还请您能够指出

相关推荐
2603_965148113 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
知无不研6 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
cfm_29146 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
C++ 老炮儿的技术栈7 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qq_448011167 小时前
C语言中的柔性数组
c语言·开发语言·柔性数组
小白学大数据7 小时前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
zlinear数据采集卡8 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
Poo_Chai8 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库
瑞码空间8 小时前
Java 图形界面(GUI)完整知识点手册
java·开发语言·图形界面·swing
小努蛋9 小时前
linux编译openresty异常问题,lua_cjson.c:706:5: 错误: ‘for‘ 循环初始化声明只在 C99 或 C++ 模式下允许
开发语言·lua·openresty