QLabel中html标签的使用

本文介绍如何在Qt的QLabel中使用HTML标签来美化显示的文字,包括加粗、改变颜色、添加下划线等效果,并提供了一个简单的示例程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

abel中显示的字符串是支持HTML标签的。如果应用好的话会达到很多方便快捷的效果。

举几个例子如下:
(1) 作为标题:
用一个QLabel对象,使其字体加大、加粗、居中,使用如下三个标签即可。
new QLabel("<font size='+1'><b><p align='center'>标题</p></b></font>", this, "title")

(2) 加下划线:
使用<u></u>即可实现。

(3) 给局部加样式
还可以对text的部分内容添加标签,以使个别内容使用不同字体、样式,并且不影响整体字体。如,给字加颜色、大小、字体等。
<font color='#5500ff' size='+1' face='Sans'>被设置了字体</font>

(4) 画横线
使用<hr>即可实现。

完整代码如下:

#include <qlayout.h>
#include <qframe.h>
#include <qlabel.h>
#include <qfont.h>
QVBoxLayout *vBox = new QVBoxLayout(this);
vBox->addWidget(new QLabel("<font size='+1'><b><p align='center'>标题</p></b></font>", this));//标题
vBox->addWidget(new QLabel("<hr>", this, "hr"));//在标题下面画一道横线
/*
//或是用下面的方法
QFrame *lbHr = new QFrame( this, "line4" );
lbHr->setGeometry( QRect( 1, 20, width()-2, 16 ) );
//lbHr->setPaletteBackgroundColor( QColor( 222, 199, 241 ) );
lbHr->setFrameShape( QFrame::HLine );
lbHr->setFrameShadow( QFrame::Sunken );
lbHr->setFrameShape( QFrame::HLine );
vBox->addWidget(lbHr);//横线
*/
vBox->addStretch(1);
vBox->addWidget(new QLabel("<u>带下划线的label</u>", this));
QLabel *label = new QLabel("设置字体:<font color='#5500ff' size='+1' face='Sans'>被设置了字体</font>", this);
//字体加粗,被设置字体部分同样加粗
QFont font = label->font();
font.setBold(true);
label->setFont(font);
vBox->addWidget(label);
QLabel *label2 = new QLabel("设置字体未加粗:<font color='#5500ff' size='+1' face='Sans'>被设置了字体</font>", this);
vBox->addWidget(label2);



需要注意的是,QPushButton不支持HTML标签。如果想使用特殊效果的字体就用QLabel代替吧,通过
setFrameShape();
setFrameShadow();
mouseReleaseEvent(QMouseEvent *e);
mousePressEvent(QMouseEvent *e);
等方法就能实现。

原文地址:http://hi.baidu.com/wangjuns8/blog/item/d14780516bfa1f020df3e3fd.html


在 Qt 的 `QLabel` 组件中,可以使用 HTML 子集来格式化显示的文本内容。通过设置富文本模式,`QLabel` 支持多种 HTML 标签样式规则,从而实现字体、颜色、段落等视觉效果的自定义。 ### 启用 HTML 格式化 要启用 HTML 格式化功能,需要调用 `setTextFormat(Qt::RichText)` 方法或直接使用支持 HTML 的字符串作为参数传递给 `setText()` 函数。例如: ```cpp QLabel *label = new QLabel; label->setText("<h1>Hello <font color='red'>World</font></h1>"); label->setTextFormat(Qt::RichText); ``` 该代码片段展示了如何将一个简单的 HTML 字符串赋值给 `QLabel` 实例,并指定其文本格式为富文本。 ### 支持的 HTML 特性 `QLabel` 支持一系列 HTML4 的标签和属性,包括但不限于: - **基本文本格式**:`<b>`(加粗)、`<i>`(斜体)、`<u>`(下划线)。 - **字体控制**:`<font>` 标签允许调整字体大小、颜色以及字体族。 - **标题与段落**:`<h1>` 到 `<h6>` 定义不同级别的标题;`<p>` 用于创建段落。 - **列表**:无序列表 `<ul>` 和有序列表 `<ol>` 及其子项 `<li>`。 - **图像插入**:通过 `<img src="...">` 插入图片资源,但需确保路径正确且资源已加载到应用程序中。 - **链接**:使用 `<a href="...">` 创建超链接[^1]。 ### 注意事项 虽然 `QLabel` 提供了对 HTML 的支持,但它并不完全兼容所有现代 Web 浏览器所支持的标准。因此,在设计复杂布局时可能会遇到限制。此外,对于安全性考虑,应避免渲染不可信来源提供的 HTML 内容,以防潜在的安全风险。 ### 示例代码 以下是一个更复杂的例子,演示了如何利用 HTML 在 `QLabel` 中展示带有样式的文本: ```cpp #include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label; QString htmlContent = "<html><body>" "<h2>Welcome to <span style='color:blue;'>Qt</span>!</h2>" "<p>This is a <b>rich text</b> example using <i>HTML</i>.</p>" "<ul><li>Item 1</li><li>Item 2</li></ul>" "</body></html>"; label.setText(htmlContent); label.setTextFormat(Qt::RichText); label.show(); return app.exec(); } ``` 此程序创建了一个窗口化的应用,其中包含一个 `QLabel` 控件,它以富文本形式展示了欢迎信息及其相关条目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值