Qt应用开发——QLabel的使用

news2024/12/23 7:55:05

目录

一、构造函数

二、属性和方法

三、实例一 显示内容和设置样式

四、实例二 使用html处理超链接

五、实例三 显示图像

六、实例四 显示GIF

七、实例五 伙伴机制


        QLabel继承于QFrame,作为Qt Wdiget最基础也是最常用的控件,在实际开发中,可以用来做很多事情。

        QLabel不提供用户交互功能,标签的视觉外观可以通过多种方式进行配置,并且可以使用它为其他界面的标签,QLabel可以用来显示以下这些内容:

  • 纯文本:纯文本数据
  • 富文本:又称呼为格式化文本,具有风格、排版等信息,如颜色、式样(黑体、斜体等)、字体尺寸、特性(如超链接)等
  • 显示图像信息
  • 显示gif文件
  • 直接显示一个double或者int类型的数字
  • 什么内容都不显示也可以

一、构造函数

        QLabel支持两种构造方式,区别在于是否默认添加初始内容

QLabel(const QString &text, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
QLabel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

二、属性和方法

text 属性代表当前标签内容

QString text() const                //当前内容
void setText(const QString &)       //设置内容

alignment 属性代表文本水平和垂直方向对齐,同一时间可以同时指定两个方向的对齐方式。默认的对齐方式为水平靠左、垂直居中。

Qt::Alignment alignment() const;        // 获取对齐方式 
void setAlignment(Qt::Alignment align); // 设置对齐方式 
水平标志
Qt::AlignLeft:         //水平靠左。
Qt::AlignRight:        //水平靠右。
Qt::AlignHCenter:      //水平居中。
Qt::AlignJustify:      //水平调整间距两端对齐。
垂直标志
Qt::AlignTop:          //垂直靠上。
Qt::AlignBottom:       //垂直靠下。
Qt::AlignVCenter:      //垂直居中。
Qt::AlignBaseline:     //垂直与基线对齐。
组合标志
Qt::AlignCenter:       两个维度的中心,等价于 Qt::AlignHCenter | Qt::AlignVCenter。

indent 属性代表文本的缩进值

int indent() const;             // 获取文本缩进值 
void setIndex(int indent);      //设置文本缩进值 

margin 属性代表显示内容的边距

int margin() const;             // 获取边距 
void setMargin(int margin);     // 设置边距 

wordWrap 属性代表显示的文本是否允许换行

bool wordWrap() const;         // 判断是否允许换行 
void setWordWrap(bool on);     // 设置是否允许换行 

scaledContents 此属性用于确定标签是否缩放其内容以填充所有可用空间。

bool hasScaledContenes() const;      // 判断是否允许图像缩放 
void setScaledContents(bool on);     // 设置是否允许图像缩放 
bool hasScaledContenes() const;      // 判断是否允许图像缩放
void setScaledContents(bool on);     // 设置是否允许图像缩放

QPixmap显示图像

const QPixmap *pixmap() const;         // 获取显示的图像 
void setPixmap(const QPixmap &pixmap); // 设置显示的图像

QMovie显示gif

QMovie *movie() const;       //获取当前的gif信息
void setMovie(QMovie *movie);//显示一个通过QMovie加载的gif文件

还有一些常用的从父类继承来的方法,这一块大家可以通过文档去查询,这里不过多说明。

QFont font():     //当前是显示的字体QFont
int width():      //宽度
int height():     //高度
const int x():    //坐标
const int y():    //坐标

三、实例一 显示内容和设置样式

 QLabel *label = new QLabel(this);
 label->setFrameStyle(QFrame::Panel | QFrame::Sunken);
 label->setStyleSheet("color: red");
 label->setText("first line\nsecond line");
 label->setAlignment(Qt::AlignBottom | Qt::AlignRight);

        标签内容通过添加‘‘\n’’实现换行,通过Alignment设置文件水平方向,通过StyleSheet设置文本样式,后面我们专题介绍StyleSheet的使用,由于QLabel继承于QFrame,所以可以通过setFrameStyle可以绘制控件样式。

  • QFrame::NoFrame         不绘制任何内容
  • QFrame::Box                  在周边绘制一个边框
  • QFrame::Panel               绘制一个面板使内容凸起或者凹陷
  • QFrame::StyledPane      绘制一个矩形面板,其外观取决于当前的GUI样式。它可以凸起,也可以凹陷。
  • QFrame::HLine               绘制一条水平线,该水平线不包含任何内容(用作分隔符)
  • QFrame::VLine               绘制一条垂直线,该垂直线不包含任何内容(可用作分隔符)
  • QFrame::WinPanel         绘制一个矩形面板,可以像Windows 2000中的面板一样凸起或凹陷。指定此形状将线宽设置为2像素。WinPanel提供了兼容性。为了保证GUI样式独立,建议使用StyledPanel。
  • QFrame::Plain                框架和内容与周围环境一致;使用调色板QPalette::WindowText颜色绘制(没有任何3D效果)
  • QFrame::Raised            框架和内容呈现凸起状态,使用当前色组的明暗颜色绘制一条3D凸起线
  • QFrame::Sunken           框架和内容呈现下沉状态,使用当前色组的明暗颜色绘制一条3D下陷线

 

四、实例二 使用html处理超链接

ui->label->setOpenExternalLinks(true);
ui->label->setText("<a style='color: green; text-decoration: none' href = https://blog.csdn.net/u014491932/article/details/131740931?spm=1001.2014.3001.5501>CSDN");
ui->label->setAlignment(Qt::AlignCenter);


ui->label_2->setText("<a style='color: green; text-decoration: none' href = https://blog.csdn.net/u014491932/article/details/131740931?spm=1001.2014.3001.5501>CSDN");
ui->label_2->setAlignment(Qt::AlignCenter);
connect(ui->label_2, &QLabel::linkActivated, [=](QString url){
        QDesktopServices::openUrl(QUrl(url));
    });

        QLabel 能够显示使用HTML 4标记子集指定的富文本.

        openExternalLinks指定QLabel是否应该使用QDesktopServices::openUrl()自动打开链接,而不是发出linkActivated()信号。

五、实例三 显示图像

QLabel *label = new QLabel(this);
QPixmap picture1 ;
picture1.load("D:/creator-gs-01.png");
label = new QLabel(this);
label->setPixmap( picture1);
label->setScaledContents(true);//自适应大小
label->resize(200, 200);

         QPixmap加载png图片,然后通过setPixmap方法显示图片。scaledContents默认值为false,当启用并且标签显示像素图时,它将缩放像素图以填充可用空间。

六、实例四 显示GIF

QLabel *label = new QLabel(this);
ui->label->resize(320,200);
QMovie *movie = new QMovie("D:/earth.gif");
movie->setSpeed(200);//设置速度
movie->start();
ui->label->setMovie(movie);

         使用QMovie加载需要播放的gif文件,设置播放速度,200代表200%,也就是2X的速度。

七、实例五 伙伴机制

ui->label->setText("&Name:");
ui->label_2->setText("&Phone:");
ui->label->setBuddy(ui->lineEdit);
ui->label_2->setBuddy(ui->lineEdit_2);

        在ui界面拉一个网格布局,添加两个Qlabel和两个lineedit,设置第一个标签为&Name,第二个标签为&Phone,然后分别设置两个输入框是他们的伙伴,当用户按下Alt+N时,焦点跳转到Name字段,当用户按下Alt+P时,焦点跳转到Phone字段。

        伙伴机制仅适用于包含以“&”符号为前缀的文本的qlabel,该字符被设置为快捷键。

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

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

相关文章

【C++】STL优先级队列(priority_queue)功能介绍以及模拟实现

优先级队列 前言正式开始priority_queue 基本介绍优先级队列的适配器第三个模板参数compare模拟实现priority_queue仿函数 前言 点进来的小伙伴不知道学过数据结构里的堆没有&#xff0c;如果学过的话&#xff0c;那就好说了&#xff0c;优先级队列就是堆&#xff0c;如果没学…

ViewModel实例什么时候被回收

作者&#xff1a;TechMix 一、ViewModel存在的意义&#xff1f; ViewModel做为JetPack中重要的组件&#xff0c;翻译成中文就是“视图模型”&#xff0c;根据分离关注点原则&#xff0c;ViewModel的出现&#xff0c;主要是为了分担Activity中的职责&#xff0c;专门用于存放和…

谷歌云 | Document AI 引入了强大的新自定义文档拆分器来自动化文档处理

【本文由Cloud Ace整理发布。Cloud Ace是谷歌云全球战略合作伙伴&#xff0c;拥有 300 多名工程师&#xff0c;也是谷歌最高级别合作伙伴&#xff0c;多次获得 Google Cloud 合作伙伴奖。作为谷歌托管服务商&#xff0c;我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培训…

Orange:一个基于 Python 的数据挖掘可视化平台

本篇介绍一个适合初学者入门的机器学习工具。 Orange 简介 Orange 是一个开源的数据挖掘和机器学习软件。Orange 基于 Python 和 C/C 开发&#xff0c;提供了一系列的数据探索、可视化、预处理以及建模组件。 Orange 拥有漂亮直观的交互式用户界面&#xff0c;非常适合新手进…

测试用例(3)

功能测试用例方法&#xff1a; 等价类 边界值 因果图 正交实验分解法 判定表驱动分析方法 非功能性的测试用例方法&#xff1a; 错误推测法 功能图分析方法 场景&#xff1a; 场景设计方法 1) 在任何情况下都必须使⽤边界值分析⽅法&#xff0c;经验表明⽤这种⽅法设…

CGT Asia嘉年华|3D细胞培养与类器官研发峰会10月广州召开

类器官指利用成体干细胞或多能干细胞进行体外三维&#xff08;3D&#xff09;培养而形成的具有一定空间结构的组织类似物&#xff0c;是近10年来干细胞领域发展最快的研究热点之一。2022年&#xff0c;FDA 通过现代化法案 2.0&#xff0c;批准全球首个完全基于“类器官芯片”研…

pandas 笔记:pivot_table 数据透视表\pivot

1 基本使用方法 pandas.pivot_table(data, valuesNone, indexNone, columnsNone, aggfuncmean, fill_valueNone, marginsFalse, dropnaTrue, margins_nameAll, observedFalse, sortTrue)2 主要参数 dataDataFramevalues要进行聚合的列index在数据透视表索引&#xff08;index…

# Linux下替换删除文件中的颜色等控制字符的方法

Linux下替换删除文件中的颜色等控制字符的方法 文章目录 Linux下替换删除文件中的颜色等控制字符的方法1 Linux下的控制字符&#xff08;显示的文字并不是他本身&#xff09;&#xff1a;2 颜色字符范例&#xff1a;3 替换4 最后 我们在shell编程显示输出时&#xff0c;会定义文…

【Java】一个简单的接口例子(帮助理解接口+多态)

要求&#xff1a; 请实现笔记本电脑使用USB鼠标、USB键盘的例子 1. USB 接口&#xff1a;包含打开设备、关闭设备功能 2. 笔记本类&#xff1a;包含开机功能、关机功能、使用 USB 设备功能 3. 鼠标类&#xff1a;实现 USB 接口&#xff0c;并具备点击功能 4. 键盘类&am…

人才输送|我的“捷码低代码工程师”转型之路!

最新职位 招聘岗位&#xff1a;低代码工程师 需求公司&#xff1a;上海北斗西虹桥基地 应聘条件&#xff1a;1、本科以上&#xff0c;最好硕士&#xff1b;2、有三年以上开发经验&#xff1b; 工作内容&#xff1a;带领团队用捷码低代码平台进行项目开发。 工作地点&#xff1a…

长城汽车Hi4技术品牌成果初现,大象转身必将势不可挡

今年1-6月&#xff0c;长城汽车销售52万辆&#xff0c;新能源车型销售9.3万辆&#xff0c;同比增长47%&#xff1b;智能新能源新产品密集上市&#xff0c;新能源销量与占比逐月攀升&#xff0c;6月销售超2.6万辆&#xff0c;占比突破25%&#xff0c;皆创历史新高&#xff1b; 全…

文档翻译成中文怎么弄?今天分享文档翻译免费要怎么弄

有一天&#xff0c;小华来到了一个外国小镇。然而&#xff0c;他发现镇上的路牌、菜单和旅游手册都是用外语写的&#xff0c;让他感到非常困扰。他不知道该去哪里游玩&#xff0c;也无法理解当地的文化和历史。他非常喜欢这个小镇的风景&#xff0c;但是他无法读懂他们这里的一…

【Linux -- 查看进程--ps,top,pstree】

Linux – 查看进程 文章目录 Linux -- 查看进程一、查看进程 -- ps二、动态查看进程的变化 -- top三、pstree -- 可以找进程之间的相关性总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、查看进程 – ps 更详细的可以通过man ps查看 ps aux …

深入理解Java虚拟机(三)垃圾收集器与内存分配策略

Java与C之间有一堵由内存动态分配和垃圾收集技术所围成的高墙&#xff0c;墙外面的人想进去&#xff0c;墙里面的人却想出来。 Java内存运行时区域的各个部分&#xff0c;其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生&#xff0c;随线程而灭&#xff0c;栈中的栈帧随…

echarts图例对齐

富文本不生效&#xff0c;是没有设置lineHeight

【运维】shell监控脚本结合钉钉机器人实现服务及服务器监控告警

文章目录 前言一、监控shell脚本和钉钉机器人二、创建钉钉机器人&#xff1a;1.在钉钉群聊里点击设置2.在设置里点击机器人选项3.再点击添加机器人4.再点击选择自定义机器人5.设置机器人名称、是否加密、是否限制ip、以及触发关键字6.获取机器人的Webhook地址 三、编写监控脚本…

MySQL表关联更新

背景&#xff1a; 有两张表&#xff0c;一张class信息表&#xff0c;一张student信息表&#xff0c;但student表里的信息存在错误&#xff0c;需要用class表中的信息去更新student表数据。 方法一&#xff1a; update student_info s set class_name (select class_name fr…

一本通12951917:装箱问题

不知道说什么废话好了 题目 装箱问题 描述 有一个箱子容量为V&#xff08;正整数&#xff0c;0&#xff1c;&#xff1d;V&#xff1c;&#xff1d;20000&#xff09;&#xff0c;同时有n个物品&#xff08;0&#xff1c;n&#xff1c;&#xff1d;30)&#xff0c;每个物品…

Spring 的依赖注入

Spring 的依赖注入 文章目录 Spring 的依赖注入每博一文案1. 依赖注入1.1 构造注入1.1.1 通过参数名进行构造注入1.1.2 通过参数的下标&#xff0c;进行构造注入1.1.3 不指定参数下标&#xff0c;不指定参数名字&#xff0c;通过自动装配的方式 1.2 set 注入 2. set注入的各种方…

uniapp 小程序 picker 日期时间段选择(精确到年月日时分+周几)

效果图&#xff1a; picker时间选择器 精确到年月日时分周几 需要引入moment.js&#xff0c;有可能引入后在项目内会报错&#xff0c;可以考虑把选择日期作为一个组件引入 1、timepage.vue组件封装 <template><view><picker mode"multiSelector" :va…