QT--Qlabel学习、获取文本和设置文本、文本对齐方式、文本换行、显示图片

QLabelQt 中的标签类,通常用于显示提示性的文本,也可以显示图像

对齐方式

用于设置标签中的内容在水平和垂直两个方向上的对齐方式,比如左对齐、右对齐、上对齐、下对齐、水平居中、垂直居中等。

cpp 复制代码
// 获取和设置文本的对齐方式
Qt::Alignment alignment() const;
void setAlignment(Qt::Alignment);

其中,Qt::Alignment 是一个宏,常用取值如下:

  • Qt::AlignLeft(0x0001) 水平方向-左对齐
  • Qt::AlignRight(0x0002) 水平方向-右对齐
  • Qt::AlignHCenter(0x0004) 水平方向-居中对齐
  • Qt::AlignTop(0x0020)垂直方向-上对齐
  • Qt::AlignBottom(0x0040)垂直方向-下对齐
  • Qt::AlignVCenter(0x0080)垂直方向-居中对齐
  • Qt::AlignCenter(AlignVCenter | AlignHCenter) 垂直方向和水平方向-居中对齐

上面的每一个宏,都代表 16 进制中的一位,可以进行或(|)操作,来同时设置多个对齐方式。

该属性,既可以在 Qt 设计师右侧的属性窗口中修改,也可以在代码中动态地获取和修改

换行

使能换行时,那么标签在缩放时,如果文字可以显示在下一行,就会自动换行

cpp 复制代码
// 获取和设置文本是否允许换行
// 换行时:在 word-breaks处,不会将一个完整的单词显示在两行
bool wordWrap() const; // 判断是否允许换行 
void setWordWrap(bool on); // 设置是否允许换行 

该属性,既可以在 Qt 设计师右侧的属性窗口中修改,也可以在代码中动态地获取和修改

其他的之前的学习都学习过就不罗列了,具体查文档即可

例子

该案例演示,如何设置和获取标签文本,文本对齐方式,文本换行,以及显示图片

cpp 复制代码
#include "QLabelTest.h"
#include<QTime>
#include<QMessagebox>
#include<QPixmap>

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

    // 获取文本和设置文本
    ui->labelGetSetText->setFont(QFont("黑体", 16));
    ui->labelGetSetText->setText("获取文本和设置文本初始化完成");
    connect(ui->pbtGetText, &QPushButton::clicked, this, [this]() {
        auto s = ui->labelGetSetText->text();
        QMessageBox::information(this, "标签演示", s);
        });
    connect(ui->pbtSetText, &QPushButton::clicked, this, [this]() {
        ui->labelGetSetText->setText(QString(QTime::currentTime().toString()));
        });

    // 文本对齐方式
    ui->labelAlignText->setFont(QFont("黑体", 16));
    ui->labelAlignText->setText("为中华民族伟大复兴而努力奋斗");
    connect(ui->pbtLeftAlign, &QPushButton::clicked, this, [this]() {
        ui->labelAlignText->setAlignment(Qt::AlignLeft| Qt::AlignVCenter);
        });
    connect(ui->pbtCenterAlign, &QPushButton::clicked, this, [this]() {
        ui->labelAlignText->setAlignment(Qt::AlignCenter);
        });
    connect(ui->pbtRightAlign, &QPushButton::clicked, this, [this]() {
        ui->labelAlignText->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
        });

    // 文本换行
    ui->lableWrapText->setFont(QFont("黑体", 16));
    ui->lableWrapText->setText("为人民幸福而奋斗,为社会主义事业而努力奋斗,为中华民族伟大复兴而奋斗");
    connect(ui->pbtEnbleWrap, &QPushButton::clicked, this, [this]() {
        ui->lableWrapText->setWordWrap(true);
        });
    connect(ui->pbtDisableWrap, &QPushButton::clicked, this, [this]() {
        ui->lableWrapText->setWordWrap(false);
        });
    
    // 显示图片
    int index = 0;
    connect(ui->pbtShowImg, &QPushButton::clicked, this, [&]() {
        QPixmap qpm;
        if (index == 0)
        {
            qpm.load(":/Icon/logo_dingding_circle.svg");
            index++;
        }
        else
        {
            index = 0;
            qpm.load(":/Icon/logo_wechat.svg");
        }
        
        ui->labelShowImg->setPixmap(qpm);
        ui->labelShowImg->setScaledContents(false);
        ui->labelShowImg->setAlignment(Qt::AlignCenter);


        });
}

QLabelTest::~QLabelTest()
{
    delete ui;
}
相关推荐
用户805533698031 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner1 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz6 天前
QML Hello World 入门示例
qt
xcyxiner9 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner10 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner10 天前
DicomViewer (添加模型类)3
qt
xcyxiner11 天前
DicomViewer (目录调整) 2
qt
xcyxiner11 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00613 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术13 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript