前言
本文将会向你介绍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文件,设置文本格式
#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
小结
今日的分享就到这里啦,如果本文存在疏漏或错误的地方还请您能够指出