13.QLabel新手入门

一、核心知识点总结

功能

核心方法

关键说明

显示纯文本

setText("文本")/setNum(数字)

setNum自动把数字转文本,更方便

显示富文本/HTML

setText("HTML代码")

支持字体、颜色、图片、超链接

显示图片

setPixmap(QPixmap("路径"))

配合setScaledContents(true)缩放图片

显示动画

setMovie(QMovie("动图路径"))

需调用movie->start()播放

文本对齐

setAlignment(Qt::AlignCenter)

常用:居中、左对齐、右对齐

自动换行

setWordWrap(true)

英文需要空格才能换行,中文自动换

超链接

setOpenExternalLinks(true)

或关联linkActivated信号手动处理

二、实用技巧

针对新手容易踩坑的点,补充关键扩展内容:

1. 完整可运行的示例代码(Qt Widgets项目)

新手最需要的是能直接运行的代码,下面是一个包含QLabel常用功能的完整示例(基于Qt 5/6,C++):

#include <QApplication> #include <QWidget> #include <QLabel> #include <QVBoxLayout> #include <QMovie> #include <QDesktopServices> #include <QUrl> class MyWidget : public QWidget { Q_OBJECT public: MyWidget(QWidget *parent = nullptr) : QWidget(parent) { // 设置窗口大小 this->setFixedSize(500, 600); // 创建布局(新手必学:布局能自动排版控件,不用手动调坐标) QVBoxLayout *layout = new QVBoxLayout(this); // ========== 1. 基础文本显示 ========== QLabel *label1 = new QLabel(this); label1->setText("基础文本(白色)"); // 设置样式:白色文字、灰色背景,方便看效果 label1->setStyleSheet("color: white; background-color: #333; padding: 5px;"); layout->addWidget(label1); // ========== 2. 居中对齐 + 自动换行 + 行高 ========== QLabel *label2 = new QLabel(this); QString text = QStringLiteral("一去二三里,烟村四五家。亭台六七座,八九十枝花。"); // 设置行高(150%) QString htmlText = QString("<p style='line-height:150%;'>%1</p>").arg(text); label2->setText(htmlText); label2->setWordWrap(true); // 自动换行 label2->setAlignment(Qt::AlignCenter); // 居中 label2->setStyleSheet("background-color: #f0f0f0; padding: 5px;"); layout->addWidget(label2); // ========== 3. 显示图片(带缩放) ========== QLabel *label3 = new QLabel(this); // 替换成你自己的图片路径(资源文件或绝对路径) QPixmap pixmap(":/images/test.png"); // 资源文件格式::/前缀/路径 // 如果没有资源文件,用绝对路径:"C:/test.png"(Windows)或 "/home/test.png"(Linux) label3->setPixmap(pixmap); label3->setFixedSize(100, 100); // 固定大小 label3->setScaledContents(true); // 按比例缩放图片 label3->setAlignment(Qt::AlignCenter); layout->addWidget(label3); // ========== 4. 超链接(新手推荐方法一) ========== QLabel *label4 = new QLabel(this); label4->setText(QString("<a href='%1'>%2</a>").arg("https://www.qt.io").arg("Qt官方网站")); label4->setOpenExternalLinks(true); // 点击直接打开浏览器 label4->setStyleSheet("padding: 5px;"); layout->addWidget(label4); // ========== 5. 显示数字 ========== QLabel *label5 = new QLabel(this); label5->setNum(99.9); // 自动转文本 label5->setStyleSheet("background-color: #e0e0e0; padding: 5px;"); layout->addWidget(label5); } private slots: // 如果用方法二处理超链接,添加这个槽函数 void openUrl(const QString &link) { QDesktopServices::openUrl(QUrl(link)); } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); MyWidget w; w.show(); return a.exec(); } #include "main.moc" // Qt5需要,Qt6可省略
2. 新手避坑指南
  • 路径问题
    • 图片/动画路径优先用Qt资源文件(.qrc),避免程序换电脑后找不到文件。
    • 资源文件创建方法:右键项目→添加新文件→Qt→Qt Resource File,然后添加文件。
  • 样式表优先级
    • setStyleSheet设置的样式会覆盖setAlignment吗?不会!样式表的qproperty-alignmentsetAlignment效果一样,选一种就行。
  • 动画不播放
    • 一定要调用QMovie::start(),否则动画不会动;记得给QMovie设置父对象(比如new QMovie(this)),避免内存泄漏。
  • 超链接点击没反应
    • 方法一必须加setOpenExternalLinks(true);方法二要确保信号槽关联成功(Qt6建议用新的信号槽语法)。
3. 新手优化建议(代码更规范)
  • 内存管理:新手容易漏写父对象,导致内存泄漏。所有控件(QLabel、QMovie、布局)都要设置父对象(比如new QLabel(this)),Qt会自动管理内存。
  • Qt6信号槽语法(更安全)
// 替换旧的connect connect(label4, &QLabel::linkActivated, this, [=](const QString &link) { QDesktopServices::openUrl(QUrl(link)); });
  • 中文乱码解决
    新手常遇到中文显示乱码,在main函数开头加:
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); // Qt5 // Qt6默认UTF-8,无需额外设置
  • 行高设置简化
// 简化版:设置行高为150% label2->setText(QString("<span style='line-height:150%;'>%1</span>").arg(text));

三、优化总结

总结

  1. 基础优先:先掌握setText/setPixmap/setAlignment这3个核心方法,其他功能按需学习。
  2. 代码可运行:新手写QLabel时,一定要结合布局(如QVBoxLayout),避免手动调坐标,同时给所有控件加父对象防止内存泄漏。
  3. 避坑关键:图片/动画用资源文件、超链接记得开setOpenExternalLinks(true)、英文换行要加空格,这3个点是新手最容易踩坑的地方。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1185626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《当投放预算跑不动:易元AI如何解决电商素材产能的系统性瓶颈》

Q1&#xff1a;现在电商投放最大的瓶颈是什么&#xff1f; A&#xff1a;不是预算&#xff0c;而是素材产能。 很多品牌并不是不敢花钱&#xff0c;而是没有足够多、足够快的投放素材承接消耗。人工剪辑单条素材消耗高&#xff0c;但产能有限&#xff0c;一旦素材跑量&#xff…

计算机深度学习毕设实战-基于python-深度学习机器学习CNN-pytorch训练识别蝴蝶-蚂蚱等昆虫

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

攻防世界cookie

1.认识cookie Cookie 全称 HTTP Cookie,是服务器通过 HTTP 响应头的 Set-Cookie 字段,下发给客户端浏览器的键值对格式文本数据(比如 flag=flag{123}; name=test);浏览器本地存储后,后续对该服务器的所有请求,都…

unity性能优化之Drawcall优化

把我之前写的csdn博客文章移个地方,吐槽下csdn真的垃圾,希望博客园能保留初心https://blog.csdn.net/pengfeicfan/article/details/126963192?spm=1001.2014.3001.5501我自豪 我是一名软件工程师。

学习Java的第七天——基础(方法的使用)

目录 一、方法的概念以及使用 1.1 什么是方法 1.2 方法的定义 1.3 方法调用的执行过程 1.4 实参和形参的关系 1.5 没有返回值的方法 二、方法的重载 2.1 为什么需要方法重载 2.2 方法重载的概念 三、递归 3.1 递归的概念 3.2 递归执行过程分析 一、方法的概念以及使…

【计算机毕业设计案例】基于Python的淘宝月季销售预测数据可视化系统(程序+文档+讲解+定制)

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

2025具身端侧芯片与云边协同:除了NV Thor,还有哪些芯片在具身机器人上整活儿

在Embodied AI范式全面转向Physical AI的2025年&#xff0c;人形机器人与高度自主移动系统的核心竞争力已不再仅仅局限于关节电机的扭矩或机械结构的灵活性&#xff0c;而在于那颗能够实时处理视觉、触觉、语音并转化为精准动作序列的“端侧大脑”及其背后的异构协同逻辑。随着…

深度学习计算机毕设之基于人工智能python-深度学习CNN-pytorch训练识别蝴蝶-蚂蚱等昆虫

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

力扣每日一练——Java

目录 一、字形变换 二、删除有序数组中的重复项 三、移除元素 四、找出字符串中第一个匹配项的下标 一、字形变换 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时…

NEAR协议:从AI研究到Web3基础层的进化之路

在区块链技术快速演进的今天&#xff0c;NEAR协议以其独特的分片架构和用户友好的设计理念&#xff0c;正成为构建下一代互联网应用的重要基础设施。本文将深入探讨NEAR的历史渊源、技术架构、核心价值与未来发展方向。一、历史起源&#xff1a;从AI研究到区块链实践NEAR协议的…

Go 连接mysql添加时区

import (_ "github.com/gogf/gf/contrib/drivers/mysql/v2" )mysql:root:123456tcp(127.0.0.1:3306)/star?charsetutf8mb4&parseTimeTrue&locAsia%2FShanghai

BNB链:从交易所代币到Web3基础设施的进化之路

在区块链世界竞争日益激烈的今天&#xff0c;BNB链以其独特的发展路径和技术架构&#xff0c;已成为连接传统金融与去中心化世界的重要桥梁。本文将深入解析BNB链的历史演进、技术架构、生态价值与未来展望。一、历史演进&#xff1a;从交易所代币到公链巨头BNB的发展历程堪称区…

深度学习毕设项目:基于python-深度学习CNN-pytorch训练识别蝴蝶-蚂蚱等昆虫

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Cosmos:构建区块链互联网的宏伟蓝图与实践之路

在区块链技术蓬勃发展的今天&#xff0c;我们目睹了数以千计的区块链网络诞生&#xff0c;但它们大多如同孤岛&#xff0c;难以相互通信和协作。Cosmos&#xff08;宇宙&#xff09;应运而生&#xff0c;它并非一条单一的区块链&#xff0c;而是一个旨在连接这些孤岛、构建“区…

深度解析var、let、const的区别与最佳使用场景

深度解析var、let、const的区别与最佳使用场景在JavaScript的变量声明体系中&#xff0c;var、let、const是三种核心方式。ES6&#xff08;ECMAScript 2015&#xff09;引入let和const后&#xff0c;彻底改变了JS的变量作用域机制&#xff0c;解决了var长期存在的设计缺陷。很多…

Polygon链:从以太坊侧链到Web3基础设施的演进之路

在区块链技术快速发展的今天&#xff0c;Polygon&#xff08;原名Matic Network&#xff09;已从解决以太坊拥堵问题的侧链&#xff0c;演进为旨在构建"互联网价值层"的多链网络。它不仅提供了高扩展性的底层设施&#xff0c;还通过创新的ZK技术和代币经济模型&#…

Selenium+Python可通过 元素定位→操作模拟→断言验证 三步实现Web自动化测试

一、环境搭建&#xff08;5分钟完成&#xff09;1. 安装依赖bash# 安装Selenium库 pip install selenium 下载浏览器驱动&#xff08;需与浏览器版本匹配&#xff09;&#xff1a;Chrome驱动&#xff1a;https://sites.google.com/chromium.org/driver/下载后放入Python安装…

深度学习计算机毕设之基于卷神经网络python-CNN深度学习识别猫脸

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

MBA必备!10个降AI率工具高效推荐

MBA必备&#xff01;10个降AI率工具高效推荐 AI降重工具&#xff1a;MBA论文的高效护航者 在当前学术研究日益依赖人工智能技术的背景下&#xff0c;MBA学生在撰写论文时常常面临一个共同难题——如何有效降低AIGC率、去除AI痕迹&#xff0c;同时又不破坏文章的逻辑性和专业性。…

深度学习计算机毕设之基于python-CNN卷积神经网络人工智能的柑橘成熟度识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…