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

小结

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

相关推荐
向宇it1 小时前
【从零开始入门unity游戏开发之——C#篇26】C#面向对象动态多态——接口(Interface)、接口里氏替换原则、密封方法(`sealed` )
java·开发语言·unity·c#·游戏引擎·里氏替换原则
@菜鸟进阶记@1 小时前
java根据Word模板实现动态填充导出
java·开发语言
卖芒果的潇洒农民1 小时前
Lecture 6 Isolation & System Call Entry
java·开发语言
SomeB1oody1 小时前
【Rust自学】6.1. 定义枚举
开发语言·后端·rust
SomeB1oody1 小时前
【Rust自学】5.3. struct的方法(Method)
开发语言·后端·rust
Kisorge2 小时前
【C语言】指针数组、数组指针、函数指针、指针函数、函数指针数组、回调函数
c语言·开发语言
轻口味3 小时前
命名空间与模块化概述
开发语言·前端·javascript
晓纪同学4 小时前
QT-简单视觉框架代码
开发语言·qt
威桑4 小时前
Qt SizePolicy详解:minimum 与 minimumExpanding 的区别
开发语言·qt·扩张策略
飞飞-躺着更舒服4 小时前
【QT】实现电子飞行显示器(简易版)
开发语言·qt