Qt之QLabel(属性 显示图片 显示动图 显示富文本信息 信号)

article/2025/10/14 6:16:00

QLabel可以说是Qt中最常见的控件之一,主要用来显示文本文字、显示图片、显示gif动图、显示富文本信息。本文将从以下几个方面对QLabel进行介绍:

[1]显示及获取文本文字

[2]显示图片

[3]显示动图

[4]显示富文本信息

[5]常用属性设置

[6]信号事件

至于样式表(Qt Style Sheet)设置本文暂时不讲,后面会有专门一节对常用控件的样式表设置进行说明。

 

创建项目

现在开始在Qt Creator中创建项目QLabelTest,并在项目中讲解QLabel:

新建文件或项目----Application----Qt Widgets Application----[设置项目名称QLabelTest并设置创建路径]----基类选择QWidget----[完成]

创建完成后工程树结构如下:

在UI设计器中拖放一个QLabel到设计窗口:

接下来将结合此项目针对QLabel进行讲解。

 

显示及获取文本

QLabel在设计器中直接设置文本内容

QLabel可以直接在设计器中设置要显示的文本内容,如果你想用QLabel显示固定不变的内容,则只用此方法即可。

设置方法:

1.在设计器中选中QLabel

2.在右侧属性设置栏中找到text,直接设置想要设置的内容。

设置QLabel显示内容为"QLabelTest":

运行效果:

QLabel在代码中动态设置文本内容

接口函数:

setText(const QString &) //设置显示内容

 

接下来我们回到widget.cpp代码中,在构造函数中添加以下代码:

ui->label->setText("Hello World!");

运行效果:

QLabel获取当前文本内容

在widget.cpp中添加头文件QDebug,以用qDebug进行调试

在构造函数中添加以下调试代码:

qDebug() << ui->label->text();

在.pro文件中添加以下代码打开控制台:

CONFIG += console

运行效果:

显示图片

要想用QLable显示图片,需要将图片添加到项目的资源文件中,或直接根据图片相对或绝对路径名去拿到图片。在实际的项目中,如果你不希望资源文件被别人随意替换,并且你想要避免误操作导致资源文件缺失的问题的话,推荐直接将图片添加到项目资源文件中。本篇文章也用添加到资源文件的方式进行讲解。

显示图片分以下几步:

[1]新建资源文件(如果没有的话)

[2]将图片添加进资源文件

[3]调用setPixmap(const QPixmap &)接口函数显示(也可设置样式表直接显示,到后面专门讲)

新建资源文件:

文件----新建文件或项目----Qt----Qt Resource File----choose----设置名称(以名称为rcfile为例)----下一步----完成

 

创建完成后工程目录多了一个"rcfile.qrc"文件

将图片添加进资源文件

右键rcfile.qrc----Open in Editor 打开如下界面:

 

点击添加---添加前缀

直接使用默认的前缀就好:

再次点击添加---添加文件---选择目标图片文件---完成

添加完成后可以右键资源文件,复制资源文件路径。

调用接口函数显示图片

为了和前面的区分开,我们再拖放一个QLabel到设计器窗口中,并重命名为pixLabel

 

接下来在widget.cpp的构造函数中添加以下代码:

//方式1:直接用路径名的方式,基准路径为当前项目的debug/release根路径
// QPixmap image("cat.png");//方式2:使用添加进来的资源文件初始化pixmap(":/new/prefix1/Resource/cat.png"是直接复制得到的)
QPixmap pix = QPixmap(":/new/prefix1/Resource/cat.png");//显示图片
ui->pixLabel->setPixmap(pix.scaled(ui->pixLabel->width(),ui->pixLabel->height(),Qt::KeepAspectRatio));

 

其中pix.scaled(ui->pixLabel->width(),ui->pixLabel->height(),Qt::KeepAspectRatio)的意思是按照pixLabel的大小等比例缩放图片的意思。

运行效果(可适当在设计器中调整QLabel的大小以获得比较好的显示效果):

 

显示动图

显示动图分以下几步:

[1]将动图添加进资源文件

[2]调用setMovie(QMovie *movie)接口显示gif图片

第一步将图片添加进资源文件的步骤这里不再重复讲述,添加完后的效果如下:

 

在UI设计器中新创建一个QLabel,并重命名为gifLabel,在widget.cpp的构造函数中添加以下代码(需要QMovie头文件):

//新建QMovie对象并用资源文件初始化
QMovie *mov = new QMovie(":/new/prefix1/Resource/timg.gif");
//播放动画
mov->start();
//setMoive
ui->gifLabel->setMovie(mov);

这样就达到了显示gif动图的效果

显示富文本信息

本文针对富文本的显示主要通过界面设计器进行介绍,然后再分析qt自动生成的代码。

1.在界面设计器中新添加一个QLabel,并重命名为“richLabel”,适当改变其大小

2.右键改Label,选择"改变多信息文本"

将会打开如下界面:

在这里我们可以添加好看的字体,设置不同的字体颜色,添加超链接、图片等。

运行效果:

3.源码分析:

自动生成的源码在Debug目录下的"ui_widget.h"文件内,用文本编辑器打开找到了如下代码:

richLabel->setText(QApplication::translate("Widget", "<html><head/><body><p><span style=\" font-size:14pt; font-weight:600; font-style:italic;\">\345\244\232\344\277\241\346\201\257\346\265\213\350\257\225\346\226\207\346\234\254</span></p><p><span style=\" font-size:14pt; font-weight:600; font-style:italic; color:#c60a1d;\">\347\272\242\350\211\262\345\255\227\344\275\223</span></p><p><span style=\" font-size:14pt; font-weight:600; font-style:italic; color:#000000;\">\345\233\276\347\211\207:</span></p><p><img src=\":/new/prefix1/Resource/timg.gif\"/></p><p><a href=\"www.baidu.com\"><span style=\" text-decoration: underline; color:#0000ff;\">\350\277\231\346\230\257\350\266\205\351\223\276\346\216\245\357\274\214\346\214\207\345\220\221\347\231\276\345\272\246</span></a></p><p><br/></p></body></html>", nullptr));

可以看到QLabel显示富文本的实现方式是直接对html代码进行解析,html源码在多信息文本编辑器中也可以看到。

在这里需要说明的是,要想让Qt按照html对QLabel的文本进行解析需要将"textFormat"属性设置为AutoText(默认)或RichText

 

常用属性设置

QLabel的常用属性设置主要针对文本格式对齐方式内容与边距的宽度超链接是否可用浏览器打开用户交互相关,下面对这些属性依次进行介绍。

设置文本格式:

setTextFormat(Qt::TextFormat) 设置文本格式:

Qt::PlainText 只显示纯文本格式(如果是HTML格式的内容,则会直接显示HTML源码)

Qt::RichText 显示富文本信息(HTML)

Qt::AutoText 自动模式,如果文本信息可能是富文本,将会以富文本的方式解析

针对此项,一般情况下默认(Qt::AutoText)就好。如果明确其内容格式,则可以进行相应设置。

设置内容对其方式:

setAlignment(Qt::Alignment)

Qt::AlignLeft 水平方向左对齐(默认)

Qt::AlignRight 水平方向右对齐

Qt::AlignHCenter 水平方向居中对其

Qt::AlignJustify 水平方向合理利用可用空间

Qt::AlignTop 垂直方向顶端对齐

Qt::AlignBottom 垂直方向底端对齐

Qt::AlignVCenter 垂直方向居中

Qt::AlignBaseline 与基线对齐

设置内容与边距的宽度

setMargin(int)

设置是否用外部浏览器打开超链接(当点击QLabel超链接时)

setOpenExternalLinks(bool open)

与用户输入交互相关设置

setTextInteractionFlags(Qt::TextInteractionFlags flags)

Qt::NoTextInteraction 与用户没有任何交互(与下面的项冲突)

Qt::TextSelectableByMouse 用鼠标可选

Qt::TextSelectableByKeyboard 用键盘可选

Qt::LinksAccessibleByMouse 超链接用鼠标可点击

Qt::LinksAccessibleByKeyboard 超链接用键盘可点击

Qt::TextEditable 文本可编辑

Qt::TextEditorInteraction 用鼠标、键盘可选、可编辑

Qt::TextBrowserInteraction 用鼠标可选、超链接可通过鼠标、键盘点击

 

以上的这些属性设置可以再界面设计器进行设置,也可以在代码中进行设置。由于比较简单,这里不进行演示。

 

信号

QLabel专有的信号事件只有以下两个(不讨论继承的信号),且都是针对于超链接的:

//鼠标点击超链接事件:
void linkActivated(const QString &link)
//鼠标放到超链接上事件
void linkHovered(const QString &link)

接下来以我们最后创建的richLabel为例进行说明

分别编写上面两个信号对应的槽函数:

槽函数声明:

//在widget.h中添加以下代码,进行槽函数声明
public slots:void LinkActivated(QString link);void LinkHovered(QString link);

具体方法实现:

//在widget.cpp函数中编写槽函数
void Widget::LinkActivated(QString link)
{qDebug() << "LinkActivated " << link;
}
void Widget::LinkHovered(QString link)
{qDebug() << "LinkHovered " << link;
}

信号与槽的绑定(在构造函数中):

其中参数1是信号的发送者,参数2是具体的信号(需要声明传参类型),参数3是信号的接受者,参数4是具体的槽函数(同样需要声明传参类型)。其中LinkHovered会在鼠标放到超链接和离开超链接时分别触发一次,这一点在实际的项目中需要注意。

connect(ui->richLabel,SIGNAL(linkActivated(QString)),this,SLOT(LinkActivated(QString)));
connect(ui->richLabel,SIGNAL(linkHovered(QString)),this,SLOT(LinkHovered(QString)));

运行结果:

总结:

QLabel主要用来显示不变的文本、图片、动图等,基本上没有多少与用户的交互。这些在本文中都进行了详细的介绍,在实际的项目中常常还需要针对QLabel进行美化,如设置背景颜色、设置边框样式、透明度等这些内容属于Qt Style Sheet的相关知识。感兴趣的朋友可以在Qt帮助手册中查找设置方法,本人也会在后面专门开一节讲Qt样式表设置。


http://chatgpt.dhexx.cn/article/OJY7M4To.shtml

相关文章

Qt扫盲-QLabel使用总结

QLabel使用总结 一、QLabel 显示内容二、注意事项1. 格式注意2. 不保留先前状态3. 格式对齐4. 伙伴焦点 三、信号和槽函数使用1. 信号2. 槽函数 总结&#xff1a; QLabel 其实就是一个用来只读显示的简易控件。适合数据量很小的内容显示。 QLabel用于显示 文本或图像。 不提供…

QT常用控件——QLabel标签控件

操作系统: 统信UOSv20 Qt版本: 5.11.3 一&#xff0c;简单介绍 QLabel用于显示文本或图像&#xff0c;不提供用户交互功能&#xff0c;标签的视觉外观可以以各种方式配置。 项目内容HeaderQLabelqmakeQT widgetsInheritsQFrame 二&#xff0c;常用方法 1. 常用方法 方法…

JavaScript 弹出对话框3种方式

js 弹出对话框3种方式对话框有三种 1&#xff1a;只是提醒&#xff0c;不能对脚本产生任何改变&#xff1b; 2&#xff1a;一般用于确认&#xff0c;返回 true 或者 false &#xff0c;所以可以轻松用于 if...else...判断 3&#xff1a;一个带输入的对话框&#xff0c;可以返回…

js的弹出框

js的弹出框包括三种&#xff1a;alert、confirm、prompt 1 alert() alert()方法有一个参数&#xff0c;就是用户想弹出的内容&#xff0c;弹出框很简单&#xff0c;就一个显示功能&#xff0c;你可以点击确认关闭这个弹出框。 例如&#xff1a; alert("hello world&…

JavaScript弹出对话框的三种方法

三种方法 alert(); 最简单&#xff0c;将alert();括号内的内容弹出。 confirm(); 与alert();类似&#xff0c;包含确认和取消按钮&#xff0c;点击确定confirm();方法会返回true&#xff0c;点击取消confirm();方法会返回false&#xff1b; prompt(); 与confirm();方法…

JavaScript弹出框

提到弹出框&#xff0c;首先想到的alert()了&#xff0c;其次想到的也还是alert&#xff08;&#xff09;&#xff0c;其实在js中有三种弹出框&#xff0c;下面我们一一说明。 1&#xff0c;仅确定。 即&#xff1a;对话框界面上只有确定按钮。该功能可以使用alert&#xff08;…

JS弹出对话框的三种方式

javascript的三种对话框是通过调用window对象的三个方法alert()&#xff0c;confirm()和prompt()来获得&#xff0c;可以利用这些对话框来完成js的输入和输出&#xff0c;实现与用户能进行交互的js代码。 第一种&#xff1a;alert()方法 alert()方法是这三种对话框中最容易使用…

JavaScript弹出对话框的三种方式-alert()-confirm()-prompt()

一、alert()警告框&#xff08;确定&#xff09; alert()方法是显示一条弹出提示消息和确认按钮的警告框。 需要注意的是 &#xff1a; alert()是一个阻塞的函数&#xff0c;如果不点确认按钮&#xff0c;后面的内容就不会加载出来。 使用方式&#xff1a; alert(“想要提示的文…

ssh 公钥登录

公钥登录远程主机 ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上。 ssh-copy-id命令也会给远程主机的用户主目录&#xff08;home&#xff09;和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。 ssh-copy-id [-i [identity_file]] [user]m…

SSH登录失败提示Key exchange failed

前两天去配置一台华为5735交换机&#xff0c;到现场才被告知网络中不允许接入私人电脑&#xff0c;要用他们的涉密电脑配置&#xff0c;结果配置完成后测试SSH远程登录失败&#xff0c;提示如下图&#xff1a; 多次检查配置没有发现有什么遗漏&#xff0c;后来询问别人告知是本…

统信UOS配置SSH登录

配置ssh登录 vim /etc/ssh/sshd_config #打开ssh配置文件 Port 22 #开启ssh 22端口 PermitRootLogin yes #允许root登录 systemctl restart sshd #重启sshd服务 使用MobaXterm1_CHS1远程工具测试 登录成功

Oracle云服务器启用SSH登录

Oracle云服务器&#xff08;虚机实例&#xff09;创建创建完成后&#xff0c;打开FinalShell&#xff08;可以使用其他Shell登录工具&#xff09;配置好相应的信息。 在此注意以下两点&#xff1a; 用户名是&#xff1a;Centos系统默认账户是opc&#xff1b;Ubuntu系统默认账户…

通过SSH登录Linux云服务器方法

目录 什么是SSH ? SSH登录云服务器 VScode配置ssh环境 VSCode配置Linux平台C/C编程环境 什么是SSH ? Secure Shell&#xff08;安全外壳协议&#xff0c;简称SSH&#xff09;是一种加密的网络传输协议&#xff0c;可在不安全的网络中为网络服务提供安全的传输环境。SSH通…

树莓派SSH登录显示Access Denied

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、2022.4.4版本以前二、2022.4.4版本以后 一、2022.4.4版本以前 补充一个&#xff0c;第一次连接wifi,在内存卡根目录新建wpa_supplicant.conf文件&#xff0c;输…

ESXi开启SSH登录权限

一、使用vmware vSphere client工具登录到esxi主机&#xff0c; 依次点击&#xff1a;主机---配置---安全配置文件---属性 二、 找到SSH,点击选项. 三、点击”启动” 四、点击“确定”保存就可以了。

kali下开启ssh登录的方法

1.netstat -lnt //查看开放是否开放22端口 2.vim /etc/ssh/sshd_config //进入关于ssh的配置文件 3.修改内容&#xff1a; 按i进行编辑修改&#xff1b; 修改完成后按Esc &#xff0c;按&#xff1a;&#xff0c;输入wq保存修改并退出。 4./etc/init.d/ssh…

python实现远程ssh登录

1、安装库 pip install paramiko 2、函数介绍 导入库 import paramiko 创建客户端 ssh paramiko.SSHClient() 设置校验 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 连接登录 ssh.connect(‘192.168.xx.xx’, 22, ‘root’, ‘pwd’) 执行命令 stdin, st…

限制SSH登录IP

步骤&#xff1a; 在指定IP的机器上&#xff08;目前是 172.1.1.10&#xff09;&#xff0c;登录192.168.1.10终端&#xff0c;输入命令&#xff1a; vim /etc/ssh/sshd_config 在末尾输入&#xff1a; AllowUsers root192.168.1.10 即允许192.168.1.10 登录root账户 如需新…

Ubuntu SSH登录

远程登录Ubuntu&#xff0c;一般使用SSH方式。下面介绍SSH的安装和使用。 1、安装SSH服务器 sudo apt-get install openssh-server2、关闭SSH sudo /etc/init.d/ssh stop3、配置SSH su root vim /etc/ssh/sshd_configPort XXX PermitRootLogin yes4、启动SSH 1&#xff09;…

debian ssh登录root

1、xshell无法登录root 2、修改/etc/ssh/sshd_config 如果没有/etc/ssh/sshd_config 就安装一下 apt install openssh-server 然后修改/etc/ssh/sshd_config cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak vi /etc/ssh/sshd_config 添加一行&#xff1a;PermitRootL…