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

小结

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

相关推荐
HL_LOVE_C几秒前
全面理解-回调函数CallBack
开发语言·c++
Distance失落心5 分钟前
java基于数组实现队列(四)
java·开发语言·数据结构·算法·面试·java-ee·intellij-idea
blog_wanghao15 分钟前
C#: 日志函数
开发语言·c#·日志
weixin_3077791319 分钟前
PySpark实现GROUP BY WITH CUBE和WITH ROLLUP的分类汇总功能
大数据·开发语言·python·spark
信徒_28 分钟前
go 语言中的线程池
开发语言·后端·golang
Pandaconda28 分钟前
【Golang 面试题】每日 3 题(六十五)
开发语言·经验分享·笔记·后端·面试·golang·go
至暗时刻darkest29 分钟前
go 查看版本
开发语言·后端·golang
向哆哆43 分钟前
Java与NoSQL数据库的集成与优化
java·开发语言·nosql
MSTcheng.1 小时前
【C语言】指针(5)
c语言·开发语言
╮壞孩子的天1 小时前
C语言多人聊天室 ---chat(客户端聊天)
c语言·开发语言