当前位置: 首页 > article >正文

008 Qt_显示类控件_QLabel

前言

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

Label

textQLabel 中的⽂本
textFormat⽂本的格式.Qt::PlainText 纯⽂本,Qt::RichText 富⽂本(⽀持 html 标签)
pixmapQLabel 内部包含的图片.
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文件,设置文本格式

#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文件

#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赋予属性

#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属性

#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
在这里插入图片描述

小结

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


http://www.kler.cn/a/450937.html

相关文章:

  • GIT与github的链接(同步本地与远程仓库)
  • Doris 资源软硬限详解
  • Vue + ECharts 实现山东地图展示与交互
  • 计算机网络B重修班-期末复习
  • Cherno C++学习笔记 P46 箭头运算符
  • windows11家庭版安装docker无法识别基于wsl2的Ubuntu
  • 【es6复习笔记】集合Set(13)
  • MongoDB 更新文档
  • Mac M1使用pip3安装报错
  • C++软件设计模式之装饰器模式
  • 创建仓颉编程语言的第一个项目
  • 【2024】Merry Christmas!一起用Rust绘制一颗圣诞树吧
  • GAMES101:现代计算机图形学入门-笔记-11
  • 数据结构与算法Python版 散列与区块链
  • 前端常用算法集合
  • HTTP—01
  • MQTT协议在树莓派上的安全性和性能测试及其在物联网应用中的应用
  • 【网络云计算】2024第52周-每日【2024/12/24】小测-理论实操-解析
  • docker 安装minio
  • SpringBoot的Thymeleaf做一个可自定义合并td的pdf表格
  • LeetCode33题:搜索旋转排序数组(原创)
  • 【VMware虚拟机】安装win10系统教程双机可ping通
  • leetcode hot100回文字符串的链表
  • 帝国CMS:如何去掉帝国CMS登录界面的认证码登录
  • 类OCSP靶场-Kioptrix系列-Kioptrix Level 5(2014)
  • GB/T34944-2017 《Java语言源代码漏洞测试规范》解读——行为问题、路径错误、处理程序错误